を使用して複数の項目を削除するには、私は、サプライヤーの製品を表示するAPIを持ってREST APIの設計 - リクエストボディ
当社のUIは、ユーザーがさまざまなフィルタ基準を選択できるようにすると、一度に多数の製品を削除するためにそれを使用します。
DELETE /api/supplier/6/products/5
DELETE /api/supplier/6/products/7
DELETE /api/supplier/6/products/8
DELETE /api/supplier/6/products/10
...
意図は一度サプライヤーの製品の束を削除するには、1つのHTTP呼び出しを行うことです。
問題は、それが数千の個々のHTTPが要求を削除しないでください時間がかかりすぎるということです。私たちはから体を取り除い当社の生産プロキシファイアウォールの背後にそれを置くまで、これがうまく
DELETE /api/supplier/6/products
Body:
{
"DeleteIds": "[5,7,8,10]"
}
:それは私たちが、削除したいすべてのIDのリストを含むように、私は削除するように体を渡すことができますDELETE要求。
HTTP仕様RFC 2616 Fielding, et al.を見てきましたが、DELETEリクエストで本文を使用すべきではないことを明示的には示していません。さらに読むことで、本文の送信に問題はないことがわかりましたDELETE要求
私は私たちのプロキシサーバーを制御しており、すべての要求に対してボディを通過させることができましたが、これはベストプラクティスではないかもしれないと心配しています。私たちは何千ものIDを渡すことができ、長さの制限に耐えることができるので、私たちにヘッダーやURLパラメータが必要ではありません。
だから私の質問は次のとおりです。 要求のボディを使用して複数の製品ために削除を行うには正しい方法でしょうか?意見だけでなく、HTTP DELETEの本文を使用しない理由について実際に文書化された証拠がありますか?
は私が
DELETE /api/supplier/6/products (Using a body)
を続けるべきか、体でDELETEを使用して、代わりに
POST /api/supplier/6/products/deletemultiple
編集のようなものにPOSTを行うべきではありません。 この問題のいくつかの良い議論があります: Restful way for deleting a bunch of items 私はDELETE要求の本文をカスタム削除アクションに使用することに関して私の質問には言及しませんが、バッチ削除が起こる可能性のあるさまざまな方法についていくつかの良い議論があります。
私はあなたの最初の確かためのオプションのために行くだろう:私たちはIDのリストを投稿することができた場合に理解したいというPOST – TBD
。それはうまくいくが正しいアプローチではないかもしれない? – bolt19
よりDELETEを使用して、私は同意する DELETE/API /サプライヤー/ 6 /製品 –