2012-01-23 6 views
1

私は他のWebサービスと統合するRESTfulアプリケーションを開発しています。ドメインのデータにはどのHTTPステータスが返されますか?

私のクライアントは、クライアントがそれらのWebサービスの1つに対して無効なデータを投稿した場合、どのHTTPステータスを返すべきですか?たとえば、アプリケーションで使用するWebサービスに無効な名前が投稿された場​​合、ユーザー入力エラーを考慮して、4 **ステータスコードのうちのどれを返す必要がありますか?

私が作ったいくつかの考慮事項は、と私はそれらを使用しての快適ではないよ、なぜ:

  • 400:データが無効ではなく、要求フォーマット自体
  • 403:サーバーではありませんデータが無効であるものの、対応することを拒否
  • 406:エラーがない「受け入れる」ヘッダに、提供パラメータに
  • 412です:エラーは、「もしマッチ」ヘッダとは何の関係もありません

だから、あなたはこの場合どのように使用しますか?

+0

このシナリオを理解するのに役立つ何か:私のアプリケーションで使用しているWebサービスが、ユーザーが無効になっていると言って、Webサービスが彼の上で操作できないとします。 – diogobaeder

答えて

-1

実際には、RESTや他のWebサービスのHTTPステータスコードはあいまいで、明確に指定することはできません。あなたのクライアントが実際にプロキシサーバーと話していて、そのプロキシが自分のステータスを送り返す場合は、面白いこともあります。あなたのWebサービスに(おそらくあなたのアプリの下に)問題がある場合は、ちょうど500を得るかもしれません。

これまで私は200を返し、あなたのクライアントのエラー情報を返すために独自のJSON 。

+0

こんにちは、ありがとう、私はステータス200と "成功" JSON応答のプロパティの1つとして使用します。 :-) – diogobaeder

+0

もう1つのことは、特別なhttp応答ヘッダーを送信することです。 X-MyServer-マジック。あなたのクライアントがそのヘッダーを見ない場合は、キャプティブWebポータルなどと対話している可能性が高いです。このオーバーエンジニアリングと呼ぶ人もいるかもしれませんが、それは私が対処しなければならない現実の問題です。 – seand

+1

いいえ、エラーの場合はステータス200を返しません。 200は「OK」を意味します。 –

2

400と貼り付けるか、または422をご覧ください(必要なものに近い場合があります)。

+0

422はWebDAV固有のようですが、それが私のサービスのセマンティクスにどのような影響を与えるかは疑問です。 400は、私が望むものではなく、不正なリクエストです。とにかくチップのおかげで。 :-) – diogobaeder

+0

いいえ、422はWebDAV固有のものではありません。 WebDAVで定義されているだけです。 –