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

问题描述 投票:1回答:2

我正在使用一个宁静的api,我需要更新资源(即具有10个字段的客户详细记录)。

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

我有几个问题:

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

  • 如果要进行验证,我应该使用PATCH(或其他任何仅将recordId和versionNo发送到服务器以更改某些字段的操作),也可以使用PUT。

  • 为了保持一致,我应该在删除请求的正文中发送数据,因为我需要recordId和versionNo才能删除记录。

rest http-post http-delete http-method http-put
2个回答
4
投票

如果要验证,我应该使用PATCH(或其他任何操作,recordId和versionNo发送到服务器以更改某些字段)或单击确定以使用PUT。

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

示例:

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

PUT / Cars / renault-clio->此请求将创建一个新的Renault Clio,或者如果已经存在,则使用我的请求中指定的数据替换整个Clio。然后,无论我是否存在,都可以确保Clio在我的请求成功之后就存在。

尽管,它是一个宁静的api,但是特定的应用程序将由角度应用程序使用,所以我应该在POST / PUT请求的响应中返回数据。

完全由您决定,从POST / PUT返回数据是可以的-特别是如果它省去了您必须进行额外的GET api请求的时间。只要始终确保您只从响应中返回所需的数据即可。

为了保持一致,我应该在删除请求的正文中发送数据,因为我需要recordId和versionNo来删除记录。

同样,完全取决于您。无论您使用查询参数(例如DELETE cars?id = 123)还是请求正文都只是您的偏好,REST中没有任何规则可用于此。


2
投票

REST响应


1
投票

简单来说,您可以说:

© www.soinside.com 2019 - 2024. All rights reserved.