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

Only allow certain fields with PUT in a REST API (Spring)

我有一个具有以下端点的 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。但是我不确定这种情况的最佳做法是什么。

只需检查您的 PUT 请求是否只有 titlecategory。如果还有别的东西 return a 400 Bad Request.

如果您是此 API 的创建者和设计者,您可以为所欲为并记录下来。

部分选项:

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

无论您选择什么解决方案 - 最重要的部分是在您的 API.

中记录下来