Spring Data Rest - 如何防止通过PATCH更新特定字段?

时间:2017-10-19 15:14:46

标签: java spring rest spring-boot spring-data-rest

我正在尝试使用Spring Data REST构建RESTful API。我定义了以下域模型,其中包含贷款及其状态。

public class Loan {

    @Id
    @GeneratedValue
    private Long id;

    private String loanTitle;

    private Double loanAmount;

    private Status status;

}

Status.java

public class Status {

    @Id
    @GeneratedValue
    private Long id;

    private String statusName;

}

现在要更新贷款的状态,我发送一个POST请求到端点loans/{id}/updateStatus,状态在请求正文中。但有人也可以使用PATCH请求更新状态,我不希望这种情况发生,因为在更新状态之前需要应用业务规则。

那么如何防止通过PATCH请求更新Status对象?

1 个答案:

答案 0 :(得分:0)

我一直在寻找解决此问题的方法,并且找到了行之有效的方法。

简单地覆盖模型中的setter,并在允许设置新值之前确保基础属性为null。

示例代码可用于合并和json-patch修补程序类型,但是Kotlin(对不起)

var uuid: String? = null
    set(uuid) {
        if (field == null) {
            field = uuid
        }
    }