我在spring boot中创建了一个REST api,目前我有一个映射来获取用户和特定用户的列表。
让我说我的用户看起来像这样:
{
"id": "1",
"name": "John",
"settings": [
"show_ads": "true",
"theme": "cool-black"
]
"last_updated": "XXX",
"created": "XXX"
}
现在我正在尝试创建crud界面的更新部分。 我如何只允许通过请求体更新某些字段,但是允许在GET路径中看到它?
在这种情况下,我会允许用户更新name,show_ads和theme。
我在控制器前面使用oauth2进行身份验证,我只希望管理员能够更改某些属性值。
此外,在发送更新用户的请求时,请求正文是否需要正确嵌套?
PUT /users/1
{"name": "Peter", "show_ads": "false"} (1)
{"name": "Peter", "settings": ["show_ads": "false"]} (2)
两者都有效还是只有2号?
答案 0 :(得分:0)
两个HTTP动词旨在用于更新PUT and PATCH。 PUT被定义为幂等的,因此只有完整更新才有效。 PATCH可用于部分更新。请考虑使用E-Tags以避免冲突(部分)更新。