我有一个rest api,满足下面一个帖子的请求。
POST /api/v1/products HTTP/1.1
Content-Type: application/json
{
"name": "product test",
"categoryId": 111,
"unitsInStock": 12,
"unitPrice": 11
}
如果这里没有找到categoryId,我想返回错误。最好的http状态码是什么?我不认为这是404,因为我没有请求资源。
状态码是通过网络域传输文档的元数据。
这是一个问题,你可以直接跟踪到请求(具体来说,请求体中的信息不是你喜欢的),所以4xx客户端错误是合适的。
描述客户端详细信息的信息属于响应体。状态码的作用是让通用组件大致了解响应体的语义。
IANA状态码注册表列举了一些可能性;请记住,描述/理由短语不是定义——定义将在注册中列出的参考文档中。
我会考虑以下候选人
- 403年禁止
- 409
403,就其本身而言,是完全令人满意的"我理解你的要求,但我不打算满足它"但是,这是一个非常广泛的信息,特别是您的操作员可能不乐意尝试在访问日志中区分这些事件。
409可能没问题。目标资源的当前状态;有点模糊。据我所知,通用组件将把409与403等同对待,因此,即使含义不完美,您也可能侥幸逃脱。