REST API中未识别PII参数:应返回404还是422状态码?
关于搜索接口返回状态码的选择
直接给结论:这种场景下应该返回422 Unprocessable Entity,而非404。
具体原因如下:
- 404的核心语义是「请求的资源不存在」:你的接口
POST /comments本身是存在的,调用方能够正常访问到这个端点,只是请求体里的邮箱在系统中没有对应记录,并不是接口本身找不到。如果返回404,会让调用方误解为评论搜索接口不存在,偏离了状态码的本意。 - 422对应「请求格式合法,但语义无效」的场景:你的请求体格式是正确的(比如邮箱格式符合规范),但这个邮箱未被系统识别(数据库中无对应记录),属于业务规则层面的无效参数,完全匹配422的适用范围。调用方收到422后,能明确知道是自己提供的邮箱有问题,而非接口本身的问题。
额外补充:如果你的接口设计是GET /users/{email}/comments(用邮箱作为路径参数),那邮箱不存在时返回404是合理的——因为此时请求的是某个特定用户的评论资源,该用户对应的资源确实不存在。但你的接口是通过POST /comments的请求体传邮箱做搜索,本质是一次查询操作,并非请求特定资源,所以用422更恰当。
内容的提问来源于stack exchange,提问作者Neeraj
相关产品推荐
相关产品推荐

