我在这里遇到的问题是 HTTP PATCH 方法,因为它允许部分更新。
我有一个如下的请求正文。
{
"userAssociationStatus": "ACTIVE",
"accountHolderAssociationStatus": "ACTIVE",
}
用于请求映射的 Bean:-
public class PatchRequestVO {
@CheckEnum(message = "Enumeration value is not found for userAssociationStatus.", enumValue = { "ACTIVE", "INACTIVE" })
private String userAssociationStatus;
@CheckEnum(message = "Enumeration value is not found for accountHolderAssociationStatus.", enumValue = { "ACTIVE", "INACTIVE" })
private String accountHolderAssociationStatus;
//getters and setters
}
检查枚举是一个自定义注释,用于验证传递的值是否与 enumValue 列表中的元素之一完全匹配。
我面临的问题是以下两个请求。
{
"accountHolderAssociationStatus": "ACTIVE"
}
在上述请求中,userAssociationStatus不存在,因此由于它是一个 PATCH,我将忽略它并仅更新其他状态。
下一个请求是
{
"userAssociationStatus": null,
"accountHolderAssociationStatus": "ACTIVE"
}
在这种情况下,我想抛出未找到的枚举,因为请求中的对象是空的。
在上述两个请求中,当字段等于 null 时,当字段不存在时,userAssociationStatus等于 null。所以我无法从请求的角度区分正在发生的事情。
问题是如何区分不存在的字段和作为 null 传递的值。
如果需要,可以提供更多信息。