我有一个 POST 请求端点,用户可以在其中重复发布数据。在我将数据插入数据库之前,根据用户请求,我会检查记录是否已经存在。 - 如果记录已经存在,我返回 200 OK,响应正文包含 table_id 和状态 - 如果记录不存在,我创建新记录并返回 200 OK,响应正文包含 table_id 和状态
基本上在这两种情况下,用户都会获得状态 200。作为用户,这可能会造成混淆,因为无法区分它是新记录还是现有记录。
我想我会返回 304 和响应主体并通知消费者告诉这个请求是“未修改的”,这样消费者就会做出决定。
这是一种好的做法还是 RESTful 原则中有替代方法。
最佳答案
304
旨在仅用于条件 GET
响应,以指示请求的内容自上次以来未更改客户要求它。它不适用于 POST
响应。
对于 POST
响应,如果创建了新记录,则使用 201
,否则使用 200
或 409
相反。
有关设计 REST API 的一些有用提示,请参阅以下内容:
Using HTTP 304 in response to POST
HTTP response code for POST when resource already exists
关于RESTful POST 请求,如果记录已经存在于 POST 数据上,我们返回 200 OK 还是 304 Not Modified?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25896281/