私は、多数のIoTデバイスのデータを処理するサーバーに常駐するREST APIを使用しています。
私のタスクは、APIを使用してサーバーにクエリを実行し、デバイスに関する特定のパフォーマンス情報を収集することです。
ある例では、利用可能なデバイスとそれに対応する識別子のリストを取得し、その後、それらの識別子(GUID)を使用してサーバーに詳細を照会します。
サーバーは500 Internal Server Error
、これらのIDのいずれかでクエリを返しています。私のアプリケーションでは、例外がスローされ、エラーの詳細が表示されません。Postmanで応答をより詳しく調べると、サーバーが以下を含む本文でJSONを返していることがわかります。
errorMessage: "This ID does not exist"
。
サーバーが最初にIDを提供したという事実は無視してください。これは開発者にとっては別の問題です。
REST API 500 Internal Server Error
は、クエリが存在しないオブジェクトを参照していることを報告するためにを返す必要がありますか?私の考えでは、HTTP応答コードは、APIの内部メカニズムではなく、REST呼び出しのステータスを厳密に参照する必要があります。私が期待する200 OK
問題のAPIに独自のだろうエラーと説明を含む応答、と。
REST呼び出しがどのように構成されているかによって、期待に潜在的な違いがあることがわかりました。
これらの例を考慮してください:
http://example.com/restapi/deviceinfo?id=123
http://example.com/restapi/device/123/info
前者の場合、デバイスIDはGET変数として渡されます。404または500は、パス(/restapi/deviceinfo
)が見つからないか、サーバーエラーになったことを示します。
2番目の場合、デバイスIDはURLの一部です。私はをよりよく理解しますが、404 Not Found
それでもパスのどの部分が変数とエンドポイントとして解釈されるかに基づいて議論することができます。