11
REST API是否应该返回500 Internal Server Error以指示查询引用了不存在的对象?
我正在使用REST API,该API驻留在为大量IoT设备处理数据的服务器上。 我的任务是使用API查询服务器以收集有关所述设备的特定性能信息。 在一个实例中,我获得了可用设备及其对应标识符的列表,然后稍后使用那些标识符(GUID)向服务器查询更多详细信息。 服务器正在500 Internal Server Error对这些ID之一返回a 进行查询。在我的应用程序中,引发了异常,并且我看不到有关该错误的详细信息。如果我使用Postman更仔细地检查响应,则可以看到服务器在包含以下内容的正文中返回了JSON: errorMessage: "This ID does not exist"。 忽略服务器提供ID开头的事实-这对于开发人员是一个单独的问题。 REST API是否应返回,500 Internal Server Error以报告查询引用了不存在的对象?在我看来,HTTP响应代码应严格参考REST调用的状态,而不是API的内部机制。我希望200 OK响应中包含错误和描述,这是所讨论的API专有的。 在我看来,取决于REST调用的结构,期望值可能存在差异。 考虑以下示例: http://example.com/restapi/deviceinfo?id=123 http://example.com/restapi/device/123/info 在第一种情况下,设备ID作为GET变量传递。404或500表示/restapi/deviceinfo找不到路径()或导致服务器错误。 在第二种情况下,设备ID是URL的一部分。我会更了解404 Not Found,但仍可以根据路径的哪些部分被解释为变量还是端点来争论。