英文:
HTTP 404 vs 422 for invalid resource identifier in request body
问题
我正在设计一个REST API,其中一个端点是搜索。因为搜索查询包含个人身份信息(PII)作为参数,所以端点使用POST,将PII参数放在请求体中,而不是使用GET。
所以我的问题是 - 如果PII参数无效,我应该返回404还是422?
我正在设计的API示例 - 获取用户的所有评论。
POST /comments
请求体
{
email: "test-user@gmail.com"
}
编辑:澄清我对“无效”的使用:我指的是在我们的数据库中不存在的电子邮件地址。我知道“无效”不是这里正确的术语,“未识别”可能是一个更好的术语。
英文:
I'm designing a REST API and one if its endpoints is a search. Because the search query contains Personally identifiable information (PII) as a parameter, the endpoint uses POST with the PII parameter in the request body instead of a GET.
So my question is - if the PII parameter is invalid, do I return a 404 or a 422 ?
Example of the API I'm designing - to get all comments by a user .
POST /comments
Request body
{
email: "test-user@gmail.com"
}
Edit: Clarifying my usage of "invalid" : I mean an email id that doesn't exist in our database. I know invalid is not the right term here, "unrecognised" is a better term maybe.
答案1
得分: 2
如果无效是指:"这不是一个有效的电子邮件地址/看起来不像一个电子邮件地址",那么我会返回 422。
如果您的 API 的目的是返回由特定电子邮件地址的用户发表的评论列表,并且该用户没有发表任何评论,我将返回一个空数组和 200 OK
,因为空集合不是一个无效的请求。
如果您想强烈表示:"这个用户在我们的系统中不存在",您也可以考虑 409
。
英文:
If with invalid you mean: "This is not a valid email address / doesn't look like an email address", then I would return 422.
If the purpose of your API is to return a list of comments made by a user with a specific email address, and there were no comments made by that user, I would return an empty array and 200 OK
, as an 'empty set' is not an invalid request.
If you want to strongly indicated: "this user does not exist on our system", you could also consider 409
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论