web-dev-qa-db-ja.com

「アイテムが見つかりません」エラーページの最も適切なHTTPステータスコードは何ですか

「アイテムが存在しません」ページに最も適切なHTTPステータスコードは何ですか。

ページ自体が存在しない場合、私は明らかに404を使用します。しかし、私のページの1つはuserid引数(「ユーザーの編集」ページ)を持ち、指定されたユーザーIDのユーザーがいない場合エラーページを表示していますが、4xxステータスヘッダーも送信したいと思います(「200 OK」が実際には収まらないため)。

404は「ファイルが見つかりません」ではなく「見つからない」ので大丈夫だと思いますが、この場合により良いコードがあるのではないかと思います。

89
ThiefMaster

あいまいなHTTPエラーコードで過度に巧妙になることは、悪い考えです。ブラウザは、状況を分かりにくくする役に立たない方法で反応することがあります。 404に固執します。

109
bmargulies

404リターンコードは、実際には「リソースが見つかりません」という意味であり、リクエストは行われたが満たされていないすべてのエンティティに適用されます。そのため、ページ、ページのサブセクション、およびレンダリングする特定の要求があるページに存在するアイテムに対しても同様に機能します。

したがって、このシナリオで使用する適切なコードは404です。それはdoes n't 'server not found'に適用されることに注意してください。これは、要求は発行されたがまったく応答しなかったという異なる状況です。

36
Eight-Bit Guru
13
KiNgMaR

これは、useridがリソース識別子か追加パラメーターかによって異なります。そうであれば、404を返しても構いません。

400 (bad request) ‐ indicates a bad request
または
412 (Precondition Failed) e.g. conflict by performing conditional update

無料の詳細情報 InfoQ Explores:REST book。

7
cetnar