1

プロジェクトとデバイスという2つのリソースを使用してRESTfulWebサービスを作成しました。「/project/ {projectId} / device / {deviceId}」などのURIを使用して、プロジェクト内の特定のデバイスにアクセスするように設計されています。ただし、デバイスがプロジェクトに属していない場合は意味がありません。projectIdとdeviceIdが一致しない場合、システムはどのステータスコードを返す必要がありますか?

  1. HTTP 400 Bad Request:リクエストの構文が正しいため、可能性は低いです。

  2. HTTP 403 Forbidden:可能性が高いですが、プロジェクトまたはデバイスが無効になっている場合は403を返したいと思います。

  3. HTTP 404が見つかりません:projectIdとdeviceIdの両方が存在します。それらは一致していません。

4

1 に答える 1

5

404お探しのページが見つかりませんでした

これは、URLが全体としてどのリソースにも対応していないことを示しています。

RFC 2616秒10.4.5から:

サーバーは、Request-URIに一致するものを検出しませんでした。状態が一時的であるか永続的であるかは示されません。

ただし、本文とヘッダーにはいつでも自由に追加情報を提供できます。たとえば、デバイスがプロジェクトに関連していないことを説明して、関連するプロジェクトURIと関連するデバイスURIへのリンクを本文に配置できます。

404 Not Found

The project http://example.com/project/1234 does not contain the device
http://example.com/device/4321

「400BadRequest」ステータスは、構文エラーのあるリクエストにのみ使用する必要があります。RFC2616秒10.4.1から

構文が正しくないため、サーバーは要求を理解できませんでした。

「403Forbidden」のセマンティクスは少しあいまいです。

于 2012-06-25T05:36:01.847 に答える