在发送到Rest API的实体创建请求(POST)中,如果没有找到外键,返回的最佳状态码是什么? &g



我有一个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等同对待,因此,即使含义不完美,您也可能侥幸逃脱。

最新更新