2016-09-23 19 views
1

deleteリクエストを/api/ingredients/123エンドポイントに送信します。要求を処理できないHTTPステータスコード

成分123が存在しない場合は、404 Not Foundステータスコードを返す必要があります。同意する?

成分123が存在するが、既存のレシピで使用されていたために削除できない場合はどうなりますか?返されるステータスコードは何ですか?

+1

適切なHTTPステータスコードを選択するための[guide](http://racksburg.com/choosing-an-http-status-code/) –

+0

@AlexandruMarculescu Nice read。ありがとうございます – user1032531

答えて

0

Re:成分123が存在しなかったという条件に応答したHTTPステータスコード[存在しなかった];はい、私は404 - Not Found - が正しいことに同意します。

成分123が存在し、今削除されている場合、410 - Gone - が適切です。

しかし、あなたのケースには成分123が存在しますが、その特定の成分の削除要求はデータ依存性の競合のため処理できません( "既存のレシピ" )。この場合、405 - Method Not Allowed - が適切です。

HTTPステータス405は、成分の参照がOKであるが削除要求ではないことを示します。

Wikipediaおよびw3.orgには、HTTPステータスコードに関する有用なページがあります。

+0

ありがとうジョン、404と410のあなたの説明は非常に右のように思える。 Per-w3、 'Request-Lineで指定されたメソッドは、Request-URIによって識別されるリソースに対して許可されていません。レスポンスは、要求されたリソースに対して有効なメソッドのリストを含むAllowヘッダーを含まなければならない(MUST)。 '。 DELETEメソッドは有効ですが、すべてではありません。クライアントが405を受け取れば、クライアントはあきらめますか?私も422を検討しているが、わからない。 – user1032531

0

304おそらく変更されていませんか?または、412前提条件が失敗しました。

ここステータスコード定義のリストがあります:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

私はこの質問への答えは30%、技術、70%の意見だと思います。

+0

アリス、304はメッセージで応答することはできませんので、多分そうではありませんか?多分412? 400が悪い要求をした状態がもはや存在しない可能性があるため、良いとは言えません。さらに多くを提供するhttps://tools.ietf.org/html/rfc4918もあります。より明確に定義することはうれしいでしょう。 – user1032531

+0

304 - 変更されていない - 事前の要請により成分がすでに削除されている場合、または他の理由により成分がもはや存在しない場合は、可能です。しかし、どちらの場合もこの状況には適用されない。 – JohnH

関連する問題