2017-04-25 12 views
1

私たちは公開され、多くのサードパーティ開発者が使用するREST APIを作成しています。私は、特にエラーケースでは、httpステータスコードのベストプラクティスを探しています。REST APIのHTTPステータスコードのベストプラクティス

私たちのアプリケーションには、APIがインターフェイスである内部的に多くのコンポーネントがあります。内部コンポーネントにエラーがある場合は、適切なエラーメッセージとともに500を返しますか?

SOを使っているとき、私はいくつかのブログ/ SOスレッドを見つけましたが、それは異なる方法を示唆しましたが、どれも具体的な答えがありませんでした。

これに関するお手伝いをさせていただきます。

答えて

3

これは非常に主観的です。ここに私の意見は、いくつかの適度に複雑なAPIを書いている。

HTTPステータスコードが、内部コンポーネントが返すエラーの種類にきちんと対応していないことを認識してください。彼らは設計されていませんでした。

従うべき基本的なルールは200です。それ以外のものはエラーです。

400 =悪い要求:

私は、これらの4つの非OKのステータスコードのみ、基本的に使用します。発信者が無効なリクエストパラメータを送信しました。 401 =権限がありません。呼び出し元には要求を行う権限がありません。 404 =見つかりませんでした。呼び出し元が見つかりませんでした、または存在しないリソースを要求しました。 500 =内部サーバーエラーです。ほかのすべて。何か悪いことが起きました。発信者はおそらくそれについて何もできません。

これは、HTTPステータスコードのためのものです。

しかし、私はそこに止まらない。私は自分自身のエラーコード、メッセージ、およびテスト環境でのスタックトレースを含むJSON応答を常に返します。私のエラーコードは、発信者が必要に応じてプログラムできる番号です。それは本当のエラーコードです、私が心配している限りです。

+0

あなたの考えをありがとう@Mike。ここで概説したのと同様のアプローチを採用しています。私たちが正しい方向にいることを知りました。 – M22an

1

以下は、APIのベストプラクティスのコード一覧です。

codes = Array(
      100 => 'Continue', 
      101 => 'Switching Protocols', 
      200 => 'OK', 
      201 => 'Created', 
      202 => 'Accepted', 
      203 => 'Non-Authoritative Information', 
      204 => 'No Content', 
      205 => 'Reset Content', 
      206 => 'Partial Content', 
      300 => 'Multiple Choices', 
      301 => 'Moved Permanently', 
      302 => 'Found', 
      303 => 'See Other', 
      304 => 'Not Modified', 
      305 => 'Use Proxy', 
      306 => '(Unused)', 
      307 => 'Temporary Redirect', 
      400 => 'Bad Request', 
      401 => 'Unauthorized', 
      402 => 'Payment Required', 
      403 => 'Forbidden', 
      404 => 'Not Found', 
      405 => 'Method Not Allowed', 
      406 => 'Not Acceptable', 
      407 => 'Proxy Authentication Required', 
      408 => 'Request Timeout', 
      409 => 'Conflict', 
      410 => 'Gone', 
      411 => 'Length Required', 
      412 => 'Precondition Failed', 
      413 => 'Request Entity Too Large', 
      414 => 'Request-URI Too Long', 
      415 => 'Unsupported Media Type', 
      416 => 'Requested Range Not Satisfiable', 
      417 => 'Expectation Failed', 
      500 => 'Internal Server Error', 
      501 => 'Not Implemented', 
      502 => 'Bad Gateway', 
      503 => 'Service Unavailable', 
      504 => 'Gateway Timeout', 
      505 => 'HTTP Version Not Supported' 
     ); 
+0

完全なステータスコードの参照をありがとう。 – M22an

0

ほとんどの有益な要求ステータスコード:

  • コード100:情報
  • コード200:成功
  • コード300:リダイレクト
  • コード400:クライアントエラー
  • コード500:サーバーエラー
関連する問題