REST API 设计 - PUT 请求 : What, 的资源关系和幂等性到底是指完整的资源表示吗?

标签 rest put idempotent

我知道对于部分更新,必须采取非幂等的操作。为此,有效的方法是向该资源发出 POST 请求。

我对相关资源有疑问。例如,想象以下资源及其属性:

  1. 帐户
    身份证号
    姓名
    帐号#
    用户(集合)

  2. 用户
    身份证号
    姓名

现在假设我想要对帐户进行部分更新 - 例如,更改帐户的名称。

我可以提出以下请求作为有效的部分更新:

POST /account/id/123

{
    "name" : "My New Name"
}

我的问题是关于完整的 PUT 请求,该请求必须是幂等的,并且必须包含资源的完整表示

我可以执行以下操作作为有效的幂等请求吗?

PUT /account/id/123

{
    "name" : "My New Name",
    "accountNumber" : "654-345-4323"
}

这被认为是有效的幂等操作吗?我已包含所有顶级“帐户”信息,但我对此表示怀疑,因为我没有发布属于该帐户的所有 USERS

为了成为有效的幂等请求,我是否需要在 PUT 请求中包含其所有子资源?

最佳答案

更容易理解的方法是认为 PUT 方法忽略目标资源的当前状态,因此“完整资源表示”意味着它必须具有替换现有资源所需的所有数据资源与新资源。

在您的示例中,这可能是没有用户的帐户的有效完整表示。

当某些内容丢失时,服务器可以采用默认值,但是应该正确记录,因为某些用户可能会混淆部分更新。

关于REST API 设计 - PUT 请求 : What, 的资源关系和幂等性到底是指完整的资源表示吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29449543/

相关文章:

iOS:在这种情况下,放置请求将如何工作?

node.js - multer 无法识别带有 PUT 的文件

azure - 用于非事务集成任务的 Azure 辅助角色的多个实例

c++ - 错误 411 需要长度 c++,libcurl PUT 请求

java - JerseyServlet 在服务器启动时初始化资源

c# - Google OAuth2 token (错误请求)

java - 将嵌套 json 映射到具有原始 json 值的 pojo

scalability - 如何使写操作具有幂等性?

java - 如何使用 RestTemplate 发布 bean 列表,但 bean 必须为字节数组?