POST请求返回202还是200状态码?异步及回调场景适用规则问询
结论
你当前的非回调场景下使用202状态码是完全符合HTTP语义的正确选择,回调场景则要根据你返回响应时的处理进度判断。
具体判断规则
HTTP状态码的选择核心依据是你返回响应时的业务处理状态,和请求方法是GET/POST没有强制绑定关系:
200 OK的标准语义是:请求已经完全处理完成,本次响应中携带了完整的处理结果202 Accepted的标准语义是:请求已经被服务端合法接收,但处理尚未完成;服务端后续不会主动向请求方推送处理结果,也不保证处理一定成功
对应你的两个场景判断
普通异步转发场景(A发请求给B,B处理完转发给C,不返回结果给A)
你返回响应给A的时候,处理还没完成,也不会把最终结果返回给A,完全匹配202的语义,用202是更规范的选择。如果用200反而会让调用方A产生误解,以为请求对应的业务逻辑已经全部处理完毕,甚至可能认为你漏返回了处理结果。回调端点场景
如果B作为回调接收方,返回响应给回调发起方时,你侧的回调校验、事件落库等所有必要逻辑已经全部处理完成,后续没有异步处理任务,直接返回200即可;如果回调请求接收后,你还有很长的异步处理流程要走,甚至还要把结果转发给其他服务,那依然选择202更合适。
内容的提问来源于stack exchange,提问作者Ratha
相关产品推荐
相关产品推荐

