Rest Api:何时使用 Post、PUT、PATCH 和 Delete

TAB*_*TAB 2 rest http-post http-put http-method http-delete

我正在开发一个宁静的 api,我需要更新一个资源(即一个包含 10 个字段的客户详细信息记录)。

在添加请求时,我发送一个带有完整记录的 Post 请求。在更新请求时,我发送一个包含 10 个字段的完整记录的 PUT 请求。在验证请求中,我发送一个只有两个字段的 PUT 请求,即 recordId 和 versionNo。在删除请求时,我在 HttpOptions 中发送一个带有两个字段的 DELETE 请求。

我有几个问题:

  • 虽然,它是一个宁静的 api,但它是一个特定的应用程序,它将被一个有角度的应用程序使用,所以我应该返回数据以响应 POST/PUT 请求。

  • 我应该在验证的情况下使用 PATCH(或任何其他仅将 recordId 和 versionNo 发送到服务器以更改某些字段的操作)还是可以使用 PUT。

  • 为了统一起见,我是否应该在删除请求的正文中发送数据,因为我需要 recordId 和 versionNo 来删除记录。

J M*_*low 7

我应该在验证的情况下使用 PATCH(或任何其他仅将 recordId 和 versionNo 发送到服务器以更改某些字段的操作)还是可以使用 PUT。

在 RESTful API 设计中,PUT 请求通常用于添加或替换整个资源,而 PATCH 应该仅用于更新现有资源。PUT 请求被称为“幂等的”——无论你发送多少次 PUT 响应,你都应该得到相同的结果。PATCH 不是幂等的。

例子:

PATCH /Cars/vauxhall-astra/engine --> 此请求将仅用于更新我现有的 vauxhall astra 的引擎

PUT /Cars/renault-clio --> 此请求将创建一个新的雷诺 Clio,或者,如果它已经存在,则使用我的请求中指定的数据替换整个 Clio。在我的请求成功后,Clio 将被保证存在,无论它之前是否存在。

虽然,它是一个宁静的 api,但它是一个特定的应用程序,它将被一个有角度的应用程序使用,所以我应该返回数据以响应 POST/PUT 请求。

完全由您决定,从 POST/PUT 返回数据很好 - 特别是如果它使您不必进行额外的 GET api 请求。只要始终确保您只从响应中返回所需的数据。

为了统一起见,我是否应该在删除请求的正文中发送数据,因为我需要 recordId 和 versionNo 来删除记录。

这完全取决于你。是否使用查询参数(例如 DELETE 汽车?id=123)或请求正文只是您的偏好,REST 中没有任何规则对此有规定。