有効なHTTP要求を行うことはできますが、HTTPの設計には反対します。私は正しいHTTPデザインで私の答えに集中しています。
まず、GETリクエストを実行すると、常にリソースの表現が表示されます。たとえURLが「リソースの集合」のようなものを表していても、HTTPの厳密な定義はありません。そのリソースのリストは、あなたのデータモデルから来る複数の「エンティティ」を依然として表すことができます。
/users
を呼び出すと、複数のユーザーエンティティを返すことができます。
同様に、DELETE
は、/users
コレクションとその中のすべてを削除している可能性があります。
私が見ている大きな問題は、クエリ文字列を使用して複数のリソースを削除していることです。私はこれがGET
/HEAD
の場合は問題ないと思いますが、DELETE
でも正しいのかどうか疑問です。私にはDELETE
の/users?foo=bar
が/users
を削除すべきだと思うので、私にとってはちょっと奇妙な気がします。一般に、ほとんどのフレームワークがどのように機能するかが原因です。すべき?私は実際にはわからない。 RESTは厳密には標準ではありませんので、私たちはそこに答えを見つけることができません。だから、私はそれが「間違っている」ということです。私は厳密にはRESTを要求していないことを理解しています。厳密なHTTPの観点からは、間違いなく大丈夫です。
しかし、あなたはのように見えないし、あなたのURLを構造化することができます:私は他の人がこれを行う見てきた、そしてそれは少し小さい感じ
/users/12,4,65
:
/users?id[]=12&id[]=4&id[]=65
ではなく、このような何か私に間違っている。しかし、これは主に推測です。
そのような複数のエンティティでDELETE
を実行しても、要求は成功するか、まったく何もしないでください。部分的な成功は受け入れられないので、正常な削除を示すために通常の200/204応答コードを使用することができます。
どのような応答が返されるのか、どのようにして返信するのか、どのようにしたいのですか。 –
もちろん、1回の呼び出しで複数のエンティティを返すことは明らかです。 – cottton