我目前正在使用 spring-data-rest 开发一个小型 REST web 服务:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
我遵循了以下指南:https://spring.io/guides/gs/accessing-mongodb-data-rest/它工作得很好。
我在我的 Person.class 上添加了一些注释,以便在 POST 请求(如 @NonNull 等)期间验证对象,如下所示:
public class Person {
@Id
private String id;
@NonNull
private String firstName;
@NonNull
private String lastName;
private Integer age;
}
但现在我想执行 PATCH 请求来更新我的对象(通过执行请求 curl -X PATCH http://localhost:8080/people/598c2a80d8425fae64161cc4 -d '{"age":23}')。
它也工作正常,但我想阻止某些字段的更新,例如不应允许人们更新 firstName 和 lastName。
有什么方法可以通过注释轻松完成吗?或者我是否必须对每个 PATCH(或 PUT)请求进行自定义验证?我不喜欢该解决方案,因为我必须对模型的每个实体都这样做。
我希望我清楚地暴露了我的问题,如果不清楚,请随时问我更多问题。
感谢您的帮助。
最佳答案
你可以使用:
@Column(updatable = false)
@NonNull
private String firstName;
这不会引发错误,但会避免更新该字段。
关于java - Spring Data Rest PATCH 禁止更新特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45635607/