java - Spring Data Rest PATCH 禁止更新特定字段

标签 java spring mongodb rest

我目前正在使用 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/

相关文章:

ruby - 在 mongoid 上提取多个和/或嵌套字段

java - 如何替换数组中字符串索引的值

java - 如何在 Java 中使用 servlet 过滤器来更改传入的 servlet 请求 url?

java - Spring Boot 1.4 - 如何使用验证来测试 Controller

spring - 将 ffmpeg 与 Spring Boot 集成

java - 如何为需要验证第三方生成的 JWT token 且用户没有密码的 rest api 配置 spring http 安全性?

java - 制作一个可滚动的 Column Control 弹出 Table

java - 如何从 Thymeleaf 调用对象的方法?

mongodb - 我在更新中对 $set 和 $inc 做错了什么

javascript - 在 NodeJS 中处理多个、顺序、依赖的 mongo 查询结果的最佳方法