2016-07-28 4 views
0

タイトルが言うとおり、有効ですか?Http複数のエンティティ要求を一度に取得して削除する(PHP)

私が手 とエンドポイントを呼び出すと、私は

何を意味するかは、サーバーが一度に複数のエンティティを返すようにする

http://some.thing/more?id[]=12&id[]=4&id[]=65

を行うには、それは、有効なのですか?

rfcドキュメントには何の注意も見えませんでした。また、戻るために状態コードを見て - それはそのように構築されていないようです。

だから私はGETまたはDELETEまたはHEAD要求が1つのエンティティのみであると思いますか?

EDIT:言語はPHPところで

EDIT2である:これは私が避けたいものです。https://stackoverflow.com/a/18141127/3411766

私は体を使用したくありません。

+0

どのような応答が返されるのか、どのようにして返信するのか、どのようにしたいのですか。 –

+0

もちろん、1回の呼び出しで複数のエンティティを返すことは明らかです。 – cottton

答えて

1

有効な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応答コードを使用することができます。

関連する問題