在REST API (Spring)中只允许某些字段使用PUT



我有一个REST API具有以下端点:/item .

用户可以使用以下数据(示例)POST到端点:

POST /item:
{
    "title": "This is a title",
    "category": "fake-category",
    "youtube_url": "http://www.youtube.com/fakeID"
}

项目创建后,他们可以发送一个PUT请求来更新项目,但是他们只允许更改titlecategory,而不允许更改youtube_url

我目前正在使用Spring。但是,我不确定这种情况下的最佳实践是什么。

如果你是这个API的创建者和设计者,你可以做任何你想做的并记录下来。

一些选择:

  1. 简单地忽略不可变的字段,而在后台更新其余的字段。
  2. 将接收到的所有字段与现有字段进行比较,如果某些不可变字段被修改,则返回HTTP代码400。
  3. 使用完全不同的PUT请求结构,即不接受包含不可反序列化字段的请求。例如,在第一种情况下使用NewItemRequestDTO有3个字段,在第二种情况下使用UpdateItemRequestDTO只有2个字段,并委托验证JSON映射库,你使用。

无论你选择什么解决方案-最重要的部分是在你的API中记录。

请检查您的PUT请求是否只有titlecategory。如果有其他内容,则返回400 Bad Request

最新更新