只允许在 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 请求来更新项目,但他们只能更改 title
和 category
,而不能更改 youtube_url
.
我目前正在使用 Spring。但是我不确定这种情况的最佳做法是什么。
只需检查您的 PUT 请求是否只有 title
和 category
。如果还有别的东西 return a 400 Bad Request
.
如果您是此 API 的创建者和设计者,您可以为所欲为并记录下来。
部分选项:
- 简单地忽略不可变字段,同时在后端更新其余字段。
- 将所有接收到的字段与现有字段进行比较,return如果修改了某些不可变字段,则 HTTP 代码为 400。
- 使用完全不同的 PUT 请求结构,即 - 不接受包含不可反序列化字段的请求。例如,在第一种情况下使用
NewItemRequestDTO
其中有 3 个字段,在第二种情况下使用 UpdateItemRequestDTO
只有 2 个字段并将验证委托给您使用的 JSON 映射库。
无论您选择什么解决方案 - 最重要的部分是在您的 API.
中记录下来
我有一个具有以下端点的 REST API:/item
。
用户可以POST使用以下数据(示例)到端点:
POST /item:
{
"title": "This is a title",
"category": "fake-category",
"youtube_url": "http://www.youtube.com/fakeID"
}
项目创建后,他们可以发送 PUT 请求来更新项目,但他们只能更改 title
和 category
,而不能更改 youtube_url
.
我目前正在使用 Spring。但是我不确定这种情况的最佳做法是什么。
只需检查您的 PUT 请求是否只有 title
和 category
。如果还有别的东西 return a 400 Bad Request
.
如果您是此 API 的创建者和设计者,您可以为所欲为并记录下来。
部分选项:
- 简单地忽略不可变字段,同时在后端更新其余字段。
- 将所有接收到的字段与现有字段进行比较,return如果修改了某些不可变字段,则 HTTP 代码为 400。
- 使用完全不同的 PUT 请求结构,即 - 不接受包含不可反序列化字段的请求。例如,在第一种情况下使用
NewItemRequestDTO
其中有 3 个字段,在第二种情况下使用UpdateItemRequestDTO
只有 2 个字段并将验证委托给您使用的 JSON 映射库。
无论您选择什么解决方案 - 最重要的部分是在您的 API.
中记录下来