我正在使用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
,但仍可以根据路径的哪些部分被解释为变量还是端点来争论。