RESTful POST 请求,如果记录已经存在于 POST 数据上,我们返回 200 OK 还是 304 Not Modified?

标签 rest http

我有一个 POST 请求端点,用户可以在其中重复发布数据。在我将数据插入数据库之前,根据用户请求,我会检查记录是否已经存在。 - 如果记录已经存在,我返回 200 OK,响应正文包含 table_id 和状态 - 如果记录不存在,我创建新记录并返回 200 OK,响应正文包含 table_id 和状态

基本上在这两种情况下,用户都会获得状态 200。作为用户,这可能会造成混淆,因为无法区分它是新记录还是现有记录。

我想我会返回 304 和响应主体并通知消费者告诉这个请求是“未修改的”,这样消费者就会做出决定。

这是一种好的做法还是 RESTful 原则中有替代方法。

最佳答案

304 旨在仅用于条件 GET 响应,以指示请求的内容自上次以来未更改客户要求它。它不适用于 POST 响应。

对于 POST 响应,如果创建了新记录,则使用 201,否则使用 200409 相反。

有关设计 REST API 的一些有用提示,请参阅以下内容:

Using HTTP 304 in response to POST

HTTP response code for POST when resource already exists

Creating an efficient REST API with HTTP

REST lesson learned: Avoid 204 responses

关于RESTful POST 请求,如果记录已经存在于 POST 数据上,我们返回 200 OK 还是 304 Not Modified?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25896281/

相关文章:

java - 如何捕获 HTTP 请求并在 Java 中模拟其响应?

android - 在 Android 中创建具有功能的 ViewPager 或等效项

php - 如何在 Slim 中将可选参数构建为问号?

c# - 使用身份验证 token 休息后调用

http - URL 目录部分的有效字符(用于短链接)

java - 如何将json添加到GET请求查询参数中?

ios - 如何使用 Swift 3 将单例与 Alamofire 一起使用?

php - 使用 PHP、REST、Flex 和 Amazon S3 进行 PUT/复制

Python REST API 在 Docker 容器中无法正常工作

java - 404/503 错误的 Json 响应