HTTP 404与422:请求体中的无效资源标识符

huangapple go评论58阅读模式
英文:

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

huangapple
  • 本文由 发表于 2023年6月16日 03:15:14
  • 转载请务必保留本文链接:https://go.coder-hub.com/76484862.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定