POST、PUT、PATCH 请求未知资源 return 400 或 404 中格式错误的主体应该吗?
Should badly formed body in POST, PUT, PATCH request to unknown resource return 400 or 404?
当向未知端点发出 POST、PUT、PATCH 请求且正文格式错误(例如,类型错误、缺少必填字段)时,应该 return 404 还是 400?
示例:
- 存在一个端点
/resource/:resourceId
。
- 存在
resourcedId: 1
的资源。
- 端点需要
2
个字段用于 PUT
请求。 enable: boolean
和 count: number
.
- 客户端发出以下请求
PUT /resource/2
正文 { enable: 7 }
。
服务器应该return 404(因为带有resourceId: 2
的资源不存在)还是400(因为正文格式无效)?
您应该做的第一个检查是您的客户端发出的请求是否格式正确。
如果不是 well-formed,你应该 return 一个 400 Bad Request Error
,防止它超出你的控制器。
如果请求格式正确,您允许它访问您的业务逻辑层,如果它没有找到它正在寻找的资源(在您的情况下为“2”),那么您必须 return a 404 Not Found Error
.
如有疑问,您有很多关于 HTTP codes
的文档,我留给您例如来自维基百科的文档
当向未知端点发出 POST、PUT、PATCH 请求且正文格式错误(例如,类型错误、缺少必填字段)时,应该 return 404 还是 400?
示例:
- 存在一个端点
/resource/:resourceId
。 - 存在
resourcedId: 1
的资源。 - 端点需要
2
个字段用于PUT
请求。enable: boolean
和count: number
. - 客户端发出以下请求
PUT /resource/2
正文{ enable: 7 }
。
服务器应该return 404(因为带有resourceId: 2
的资源不存在)还是400(因为正文格式无效)?
您应该做的第一个检查是您的客户端发出的请求是否格式正确。
如果不是 well-formed,你应该 return 一个 400 Bad Request Error
,防止它超出你的控制器。
如果请求格式正确,您允许它访问您的业务逻辑层,如果它没有找到它正在寻找的资源(在您的情况下为“2”),那么您必须 return a 404 Not Found Error
.
如有疑问,您有很多关于 HTTP codes
的文档,我留给您例如来自维基百科的文档