2017-08-07 67 views
0

皆様にお挨拶しています.HTMLページにデータテーブルがあり、REST APIを使用して作成しました。新しい行を作成したり、行を選択して編集または削除ボタンをクリックして、更新または削除することもできます。REST API複数のPUTまたはDELETEを一度に行う

しかし、現在、私は例えば、

アップデートを削除したり、原因URLエラーに一度に複数の行を削除することができません:私は更新したときに、私はそれぞれのIDを持ついくつかの個別のURLには、この本を分割することができますどのようにPUT http://127.0.0.1:8000/dashboard/content_detail/5,7,9/ 404 (Not Found)

削除してください。

例えば:以下

/dashboard/content_detail/5 
/dashboard/content_detail/7 
/dashboard/content_detail/9 

は、任意のヘルプをありがとうございまし高く評価され、私のコードです。

idSrc: 'id', 
    ajax: { 
     create: { 
      type: 'POST', 
      url: content_path, 
      data: function (content_data) { 
       var create_data = {}; 
       $.each(content_data.data, function (id, value) { 
        create_data['name'] = value['name']; 
        create_data['description'] = value['description']; 
        create_data['category'] = value['category']; 
       }); 
       return create_data; 
      }, 
      success: function() { 
       content_table.api().ajax.reload(); 
      } 
     }, 
     edit: { 
      type: 'PUT', 
      url: '/dashboard/content_detail/_id_/', 
      data: function (content_data) { 
       var updated_data = {}; 
       $.each(content_data.data, function (id, value) { 
        updated_data['description'] = value['description']; 
        updated_data['category'] = value['category']; 
        updated_data['name'] = value['name']; 
       }); 
       return updated_data; 
      }, 

      success: function() { 
       content_table.api().ajax.reload(); 
      } 
     }, 
     remove: { 
      type: 'DELETE', 
      url: '/dashboard/content_detail/_id_/', 
      data: function (content_data) { 
       var deleted_data = {}; 
       $.each(content_data.data, function (id, value) { 
        deleted_data['id'] = id; 
       }); 
       return deleted_data; 
      }, 
      success: function() { 
       content_table.api().ajax.reload(); 
      } 
     } 
    }, 
+0

デザインやプログラミングの質問ですか? – MaVVamaldo

+0

プログラミングの質問ですが、この '/ dashboard/content_detail/5,7,9 /'のようなものではなく、個々のURLをPUTする方法を尋ねています –

答えて

0

一度に多数の項目の更新を許可するつもりなら、その後、PATCHはあなたの友人かもしれない:(パッチ標準を定義する)RFC 6902を見ると

、からクライアントの視点では、APIを呼び出すことができます

PATCH /authors/{authorId}/book 
[ 
    { "op": "replace", "path": "/dashboard/content_detail/5", "value": "test"}, 
    { "op": "remove", "path": "/dashboard/content_detail", "value": [ "7", "9" ]} 
] 
+0

HTTPメソッドPATCHを使用して部分的なリソースそれで正しい選択ではありません http://restcookbook.com/HTTP%20Methods/patch/ – Torsten

+0

こんにちは、お互いに感謝しています。はい、私はパッチを検索しようとしましたが、残念なことにTrostenはそう言いました部分的なリソースのみを更新します。したがって、私は最良の方法は、別のURLでのリクエストを提出することが最も良いと思われる –

0

あなたはあなたのURLにいくつかのIDを必要としません。

私は一回に1つずつしか操作しないリソースを考えながら、変更ごとに1回の呼び出しを希望します。

これがパフォーマンス問題の場合は、RESTではないことを明確にするために、アクションや何かsimliarでマークされた特別なURLをお勧めします。

+0

しかし、私のアプリケーションでは、例えば、 "進行中"から "完了"に30のプロジェクトステータスを変更する必要がある場合、オプション –

0

HTTPでは、情報が単一のリソース上に存在する必要はありません。同じ基礎データを表す複数のリソースを持つことは可能です。

したがって、DELETEまたはPUTする他のリソースのセットを「表す」リソースを作成することは避けられません。

私はそれが最も望ましくないかもしれないことに同意します。私は、情報がツリーの1つの部分だけに存在することを好む傾向があると思うし、リソースの更新がセカンダリリソースの状態に影響する状況を避けたいと思う。しかし、この問題を解決するために厳密にRESTfulなソリューションを探しているのなら、それは正しい方法だと思います。

ためのようなURL設計:

/dashboard/content_detail/5,7,9/ 

は必ずしも非RESTfulなされていないか、またはHTTPプロトコルに反します。そのURLで404を取得しているということは、現在、APIのプロトコル(HTTP)またはアーキテクチャ(REST)ではなく、アプリケーションフレームワークと関連しています。

しかし、これらのような場合には、個別にPOSTエンドポイントを作成する傾向があります。RPCエンドポイントのようにRESTの外で動作することがあります。特に、これらのタイプのバッチ要求の場合。

関連する問題