在发送到 Rest API 的实体创建请求(POST)中,如果没有找到外键,return 的最佳状态代码是什么?
In an entity creation request(POST) sent to Rest API, what is the best status code to return if no foreign key is found?
我有休息 api 满足 post 的要求,如下所示。
POST /api/v1/products HTTP/1.1
Content-Type: application/json
{
"name": "product test",
"categoryId": 111,
"unitsInStock": 12,
"unitPrice": 11
}
如果在此处找不到 categoryId,我想 return 报错。最好的 http 状态代码是什么?我不认为这是 404,因为我还没有请求资源。
状态代码是 transfer of documents over a network 域中的元数据。
这是一个您可以直接追溯到请求的问题(具体来说,请求正文中的信息不符合您的喜好),因此 4xx Client Error 是合适的。
描述客户端详细信息的信息属于响应正文。状态码是为了让通用组件对响应主体的语义有一个粗略的理解。
IANA status code registry 列举了多种可能性;请记住 description/reason-phrase 不是定义 -- 定义将在注册时列出的参考文档中。
我会考虑以下候选人
403 本身就非常令人满意“我理解你的要求,但我不会满足它。”不过,这是一个非常广泛的信息,尤其是您的操作员可能不乐意尝试在您的访问日志中区分这些事件。
409 可能没问题。 “目标资源的当前状态”有点模糊。据我所知,通用组件会将 409 视为与 403 相同,因此即使含义不完美,您也可能会侥幸逃脱?
我有休息 api 满足 post 的要求,如下所示。
POST /api/v1/products HTTP/1.1
Content-Type: application/json
{
"name": "product test",
"categoryId": 111,
"unitsInStock": 12,
"unitPrice": 11
}
如果在此处找不到 categoryId,我想 return 报错。最好的 http 状态代码是什么?我不认为这是 404,因为我还没有请求资源。
状态代码是 transfer of documents over a network 域中的元数据。
这是一个您可以直接追溯到请求的问题(具体来说,请求正文中的信息不符合您的喜好),因此 4xx Client Error 是合适的。
描述客户端详细信息的信息属于响应正文。状态码是为了让通用组件对响应主体的语义有一个粗略的理解。
IANA status code registry 列举了多种可能性;请记住 description/reason-phrase 不是定义 -- 定义将在注册时列出的参考文档中。
我会考虑以下候选人
403 本身就非常令人满意“我理解你的要求,但我不会满足它。”不过,这是一个非常广泛的信息,尤其是您的操作员可能不乐意尝试在您的访问日志中区分这些事件。
409 可能没问题。 “目标资源的当前状态”有点模糊。据我所知,通用组件会将 409 视为与 403 相同,因此即使含义不完美,您也可能会侥幸逃脱?