如何检测不存在文档的更新操作失败(获取404状态码)
问题
执行以下更新请求:
curl -v -X PUT -d '{"fields":{"postings":{"assign":42}}}' http://localhost:8080/document/v1/post/post/docid/ABCDEFG
当目标文档「ABCDEFG」不存在时,服务器仍返回「200 OK」,有没有办法让这种情况返回「404 NOT FOUND」,或者检测到此次更新操作失败?
解决方法
- 提前校验文档存在性:在执行PUT更新前,先发送GET请求确认文档是否存在。比如运行:
如果返回404,就跳过后续更新;如果返回200,再执行更新操作。curl -v http://localhost:8080/document/v1/post/post/docid/ABCDEFG - 修改服务端处理逻辑:如果你能调整后端代码,可以在处理PUT请求时先检查目标文档是否存在。不存在的话直接返回404,存在再执行更新并返回200。
- 解析响应体判断结果:部分服务在文档不存在时执行PUT,会在响应体里返回更新状态(比如
{"affected_rows": 0}这类标识),可以通过解析响应体里的字段,判断是否真的完成了更新。
内容的提问来源于stack exchange,提问作者doublemax
相关产品推荐
相关产品推荐

