2011-02-22 16 views
18

ユーザーが投稿を削除する単純なケースを考えてみましょう。これは、単純なHTTP DELETE/POST要求であり、1つの必須フィールド、post_idを伴います。必須フィールドのないリクエストに対する適切なHTTP応答コード

post_idが提供されていない場合、サーバはどうするべきですか?

明らかに、この動作に遭遇することはありませんので、純粋にしましょう。

私の最初のテイクが400悪い要求だろうが、スペックは

The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications. 

を言うと、私は不足している分野は、構文/ HTTP POVからOKだと思います、それはアプリケーションドメイン固有のセマンティックな要件です。

200説明が悪いと500が奇妙に感じられますが、これはリクエスト問題です。

しかし、

+1

[リクエストに必須のパラメータが指定されていない場合、どのHTTPステータス応答コードを使用する必要がありますか?](http://stackoverflow.com/questions/3050518/what-http-status-response-code-should-i-use-if-the-request-is-missing-a-required) – Lucero

答えて

29

4が正しい応答です。

400は、HTTPの観点から不正な形式の構文に限定されません。最初のこのための独立したリターンコードがないこと奇妙なようで、アプリケーションので、「不正な要求」

EDIT

によって定義された構文に誤りが、リターンは必須の引数をされて行方不明コードは、クライアントがどのようなアクションをとるべきかを区別するように設計されています。 400エラーコードは、クライアントがPOSTデータまたはクエリ文字列をアプリケーションによって定義された形式に変更する必要があることを意味します。したがって、この場合には適切です。

+0

ここにRESTfulレスポンスコード、RESTのベストプラクティスに関するその他の情報:http://goo.gl/Nf9gt –

1

RESTシナリオでは、削除するリソースをURLで識別する必要があるため、リソースのIDは適切に識別するためにそのURLの一部である必要があります。その仮定が正しければ、URLは別のリソースfr削除を識別しているか、そうでない(404を与える)

一般的に欠落しているパラメータの場合、私は403禁じられたエラー。推論は要求が理解されていることですが、私は(物事が間違っているので)尋ねられたようにするつもりはありません。応答エンティティは何が間違っているかを説明します。したがって、応答がHTMLページの場合、エラーメッセージはページにあります。 JSONまたはXML応答の場合、エラー情報がそこにあります。 rfc2616から

サーバーを禁止

10.4.4 403は、要求を理解したが、それを実行することを拒否しています。
認証は役に立ちません。要求を繰り返さないでください。
要求メソッドがHEADでなく、サーバが
をなぜ公開していないのかを公開したい場合は、 の理由をエンティティで記述すべきです(SHOULD)。サーバーが クライアントにこの情報を提供しないようにする場合は、ステータスコード404
(見つからない)を代わりに使用できます。

関連する問題