Spring启动REST,只允许一些属性更新

时间:2017-06-29 07:13:34

标签: spring-boot

我在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号?

1 个答案:

答案 0 :(得分:0)

两个HTTP动词旨在用于更新PUT and PATCH。 PUT被定义为幂等的,因此只有完整更新才有效。 PATCH可用于部分更新。请考虑使用E-Tags以避免冲突(部分)更新。