我有一个类Address看起来像这样:
@Value
class Address {
@NotNull String userId;
@NotNull String line1;
String line2;
private Address(Builder b) {
// copy everything from builder
}
// override getter for line2 so that it returns Optional<String>
public Optional<String> getLine2() {
return Optional.ofNullable(this.line2);
}
// and a Builder
public static class Builder {
// builder methods
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我被迫写Builder了一个Getter因为,如果我想在使用Lombok时返回一个Optional,我必须声明line2为Optional<String>.这将生成一个接受的构建器方法Optional<String>!
还有其他方法可以使用lombok Optional吗?
在我的春季启动服务中,我使用https://github.com/java-json-tools/json-patch来处理PATCH请求.
一切似乎是确定除的方式来避免修改状物品ID的,CREATION_TIME等不可改变的领域我都发现了类似的问题在Github https://github.com/java-json-tools/json-patch/issues/21为我找不到合适的例子.
这个博客似乎提供了一些有趣的解决方案,用于在node.js中使用解决方案来验证JSON补丁请求.很高兴知道JAVA中是否有类似的东西.
@PatchMapping("/update")
HttpEntity<String> updateOnlyIfFieldIsPresent(@RequestBody Person person) {
if(person.name!=null) //here
}
Run Code Online (Sandbox Code Playgroud)
如何区分未发送的值和空值?如何检测客户端是否发送空字段或跳过字段?
我们有带有属性的文章资源:
如果我们只想删除图像,则发出请求
{title: null, image: null, description: null, status: null}
Run Code Online (Sandbox Code Playgroud)
如果我们只想更新状态,我们会发出请求
{title: null, image: null, description: null, status: draft}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,图像也会被删除
如何在REST中仅更新一个属性?
我找不到 PUT 调用的开发人员指南。如果在 PUT 请求中将可选值作为 null 传递,我们应该怎么做。我们是在 db 中将其设置为 null 还是保留 db 中的先前值(如果有)?这种方法的问题在于,一旦使用值创建,我们将无法更新值以取消可选字段。
例如。对于同一个实体假设Student表,我有一个名称为student_optional_subject的可为空列。现在在 POST student_optional_subject 中设置为值“微积分”。再次发出 PUT 请求,请求正文中的 student_optional_subject 为空(即请求中缺少该字段,因为它是可选字段)..我应该在 student_optional_subject 中保留“微积分”还是将其设置为空..
java ×3
rest ×3
json ×2
spring ×2
http ×1
jackson ×1
json-patch ×1
lombok ×1
optional ×1
spring-mvc ×1
spring-rest ×1