我的服务器连接到几个机器视觉相机,我正在创建一个REST API,使用它们执行一些操作,例如检测可见的QR码,校准白平衡和捕获图像。
其中一些操作可能会失败(对于一个或多个相机),我想知道使用最合适的HTTP响应来将此报告给客户端。
例如,请求从多个摄像机读取QR码:
POST /api/camera/readQrCode
{...JSON body identifies the cameras to use...}
(注意。POST
是因为它使用读取内容的详细信息更新服务器状态)
此请求可能由于多种原因而失败,包括:
- 请求的摄像机不可用(
404 Not Found
在这里似乎是合理的) - 任何相机都无法捕获图像
- 任何摄像头都无法检测QR码
我特别想知道处理的最佳方法是#2和#3。到目前为止,我想到的最好的方法是返回200 OK
响应并发送一个JSON响应,该响应描述了每个相机的总体成功和单个状态,例如:
{
success: false,
cameraResults: [
{"cameraId": "123", success: true},
{"cameraId": "456", success: false},
]
}
它只是感觉不一定正确使用2xx
代码,也不是#2或#3客户端错误(4xx
),我看不到任何合适的5xx
代码。我很想听听别人是怎么看待这里的传统的。
谢谢
最后我采用了我在最后提出的解决方案,现在已经足够好了:
200 OK响应和一个形式为
的结果对象{
success: false,
cameraResults: [
{"cameraId": "123", success: true},
{"cameraId": "456", success: false},
]
}