SpringBoot使用PUT映射来创建/更新资源



考虑以下Json主体-

{
"id": 1,
"userName": "test-user1@test.com",    
"emails": [
{
"id": 69,
"emailAddress": "test-user1-x@test.com"
},
{
"emailAddress": "test-user1-y@test.com"
}
]
}

在这个例子中;用户";实体具有一对多关系;电子邮件";实体当我更新用户时,我也想更新和/或创建电子邮件。我知道应该有一个端点来创建/更新电子邮件,也应该有一一个端点用于创建/更新用户。

POST/users

PUT/users/{id}

POST/用户/{id}/电子邮件

PUT/用户/{id}/电子邮件/{emailId}

但我想知道用";PUT/users/{id}";端点?例如:如果电子邮件数组元素具有";id";属性,然后更新现有电子邮件。如果";id";电子邮件数组中的属性丢失,然后创建电子邮件。这是一种好的思考方式吗。

只使用POST创建,只使用PUT更新。

POST是一种在服务器上更改状态的方法,这意味着每次发布后都会创建新的记录。

PUT是幂等的,这意味着对于任何数量的调用,相同的请求结果都应该是相同的。

我推荐这个:

POST /users

创建用户

PUT /users/{id}

更新id为{id}的用户。请求正文包含用户信息,id为取自,作为url的路径变量。

POST /users/{id}/emails

为用户id{id}创建电子邮件,id取自url,电子邮件信息在身体里。

PUT /users/{id}/emails/{emailId}

更新id为{emailId}的用户{id}电子邮件的电子邮件,电子邮件id为取自url,电子邮件数据来自正文。

最新更新