[解決済み] RESTを使った複数レコードの削除
2022-05-12 15:54:10
質問
複数のアイテムを削除するためのREST-fulな方法は何ですか?
私のユースケースは、私が一度に複数のアイテムを削除することができる必要があるBackboneコレクションを持っていることです。オプションは次のようになります。
- すべてのシングルレコードのDELETEリクエストを送信する(これは、潜在的に数十の項目がある場合、悪い考えのように思われます)。
- 削除する ID を URL につなぎ合わせた DELETE を送信します (例: "/records/1;2;3")。
- REST ではない方法で、削除するためにマークされた ID を含むカスタム JSON オブジェクトを送信します。
すべてのオプションは理想的ではありません。
これはRESTの規約のグレーゾーンのような気がします。
どのように解決するのですか?
- は実行可能な RESTful な選択肢ですが、明らかにあなたが説明したような制限があります。
-
これはやめましょう。にある(単一の)リソースをDELETEする」という意味だと仲介者によって解釈されるでしょう。
/records/1;2;3
" - つまり、これに対する 2xx レスポンスは、キャッシュをパージするために/records/1;2;3
; ではなく パージ/records/1
,/records/2
または/records/3
に対する 410 レスポンスをプロキシします。/records/1;2;3
など、あなたの視点からは意味のないものです。 -
この選択が最善である。
であり、RESTful に行うことができます。API を作成していて、リソースへの大量の変更を許可したい場合、REST を使用してそれを行うことができますが、正確にどのように行うかは多くの人にとってすぐにわかるものではありません。1つの方法として
変更要求'リソースを作成する
(のようなボディを POST することで)。
records=[1,2,3]
を/delete-requests
で指定される)作成されたリソースをポーリングします。Location
ヘッダで指定されます) をポーリングして、 リクエストが受け入れられたか、拒否されたか、進行中か、終了したかを調べます。これは長時間実行される操作に便利です。別の方法として を送ることです。PATCH
リクエストをリストリソースに送る ,/records
へのリクエストで、そのボディはリソースのリストとそれらのリソースで実行するアクションを含んでいます (サポートしたい形式は何でもかまいません)。これは、リクエストに対するレスポンスコードが操作の結果を示すことができるような素早い操作に便利です。
RESTの制約を守りながらすべてを達成することができ、通常、答えは「問題」をリソースにし、それにURLを与えることです。
つまり、ここでの削除、リストへの複数のアイテムのPOST、一連のリソースへの同じ編集などのバッチ操作はすべて、quot;バッチ操作リストを作成し、新しい操作をそこにPOSTすることによって処理できます。
忘れてはならないのは、RESTはどんな問題を解決するための唯一の方法ではないということです。「REST」は単なるアーキテクチャーのスタイルであって を持つ を遵守する必要はありません(ただし、遵守しなければ、インターネットの特定の利点を失うことになります)。私は、この HTTP API アーキテクチャ の一覧を見て、自分に合ったものを選ぶことをお勧めします。他のアーキテクチャを選択した場合に何が失われるかを認識し、ユースケースに基づいて十分な情報を得た上で決断してください。
この質問に対する悪い回答が REST Webサービスでバッチ操作を処理するためのパターン? には、あまりに多くのupvoteがありますが、これも読むべきでしょう。
関連
-
[解決済み] SOAPとRESTの比較(相違点)
-
[解決済み] 検証失敗または重複が無効な場合のREST HTTPステータスコード
-
[解決済み] HTTP DELETE リクエストにエンティティボディは許されますか?
-
[解決済み] RESTアプリケーションはステートレスであることが前提である場合、セッションはどのように管理するのですか?
-
[解決済み] URLクエリパラメータを含むHTTP POST -- 良いアイデアかどうか?
-
[解決済み] 検索のためのRESTfulなURL設計
-
[解決済み] RESTのネストされたリソースのベストプラクティスは何ですか?
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
-
[解決済み】有効なリクエストでありながら、データが空の場合の適切なRESTレスポンスコードは何ですか?
-
[解決済み] RESTとは?若干の混乱【終了
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HTTP GET(リクエストボディ付き
-
[解決済み] HTTP DELETE リクエストにエンティティボディは許されますか?
-
[解決済み] RESTリソースの命名規則はSingularとPluralのどちらを使用すべきですか?
-
[解決済み] 検索のためのRESTfulなURL設計
-
[解決済み] オブジェクト内のアイテムの合計数を返すための最良のRESTfulメソッドは何ですか?
-
[解決済み] リソースとエンドポイントの違いは何ですか?
-
[解決済み] RESTのPUT/POST/DELETEコールは、規約によって何を返すべきですか?
-
[解決済み] RESTでトランザクション?
-
[解決済み] RESTを使った複数レコードの削除
-
[解決済み] HATEOAS(REST-architecture)の実例集 [終了しました]。