我必须创建一些Web服务来验证给定字段的可能值。我正在考虑做类似的事情:
POST /entity/fieldName body { fieldValues }
如果参数无效,POST将返回400(错误请求),否则返回422(不可处理实体)。但是我不太喜欢422响应部分因为它使请求总是返回错误。另一方面,由于我只进行验证,这是一个POST,我不想在服务器上实际创建新资源(即返回200)。是否有另一个更适合此方法的HTTP方法/ API端点?为了它的价值,我将检查<fieldName>
的实体字段在给定范围内的值。
答案 0 :(得分:1)
如果您所做的只是验证,那么我认为您应该通过验证错误发送422
,并通过验证成功发送200
。 POST并不意味着您必须始终创建新实体。
POST方法执行的操作可能不会导致 可以通过URI标识的资源。在这种情况下,要么200 (OK)或204(No Content)是适当的响应状态,具体取决于 关于响应是否包括描述该响应的实体 结果
如果已在源服务器上创建资源,则为响应 应该是201(创建)并包含一个描述该实体的实体 请求的状态,并引用新资源和位置 标题(见第14.30节)。
答案 1 :(得分:1)
我更喜欢google's api error response style。
所以我的服务发送错误响应为json或xml和400 Bad request
错误代码:
{
"status": "INVALID_REQUEST",
"type": "ERROR_MSG",
"data": {
"request": "/v2/data?age=23d",
"errors": [
"age: not a number"
]
},
"time": -1
}
否则200
和相应的消息