当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot中将请求体中的几个属性作为可选属性

法镜
2023-03-14

我的控制器中有一个HTTP类型POST的RESTendpoint(/用户),该RESTendpoint接受具有以下属性的用户请求体:

{
  name: 'abc',
  address: 'xyz',
  phoneNo: '123',
  age: '12',
  email: 'xyz@gmail.com'  
}

我的要求是,age应该是完全可选的,因为如果用户调用RESTendpoint而没有在有效负载中指定age(关键字),它应该像一个魅力。对于例如。

{
  name: 'abc',
  address: 'xyz',
  phoneNo: '123',
  email: 'xyz@gmail.com'  
}

因此,如果用户没有在有效负载中指定age关键字,我有一个默认的业务逻辑要执行,另一方面,如果用户指定age关键字及其值,那么我有一些其他逻辑要处理。

仅供参考-我有一个由用户创建的DTO类,我在其中声明了所有属性,下面是它的外观

@Data
class Users{
 @NotNull
 private String name;
 @NotNull
 private String address;
 @NotNull
 private String phoneNo;
 private String age;
 @NotNull
 private String email;  
 
}

因此,如果有人能为我提供处理问题陈述的方法,我将不胜感激。

谢谢,外星人!

共有1个答案

桑宇
2023-03-14

在DTO类上使用注释JsonIgnoreProperties(ignoreUnknown=true),这样如果RequestBody没有该属性,那么该属性将被忽略。

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
class Users {
  .......
  .......
}
 类似资料:
  • 我有一个资源: 我想定义一个补丁,这样客户端就可以更新image、bio或两者。 有效的请求主体示例如下: 如果属性单独发送,则现有的属性将在服务器上保持不变,并且只会更新图像。如果两者都发送(如上所述),两者都将更改。 简而言之: > 不允许使用空的请求正文。 ,or是允许的。 这就是我目前所拥有的。我正在使用带有两个独立类型的anyOf对象:object。我曾使用virtserver在Swag

  • 我正在使用Surefire插件来运行TestNG套件,我要求从套件.xml运行完整的或特定测试。对于相同的,我使用属性来提供测试名称,它与一起工作,但是当我使用out 参数运行时,那么它的抛出异常

  • 是否有办法获得请求。要求要求一场在图像的层次结构中看到的属性?我尝试了以下方法: <代码>对象值=请求。getAttribute(“Travis”) 和

  • 我试图用SpringMVC和JSP页面创建一个示例注册页面。 在tomcat服务器上打开url时,我发现以下错误 我有一个JSPregister.jsp 我有一个控制器类UserController。JAVA 还有success.jsp一页 我在stackoverflow上尝试了许多解决方案。。。。但没有一个成功。

  • 以下操作不起作用。但是如何定义可选的?

  • 我试图用Postman写一个非常简单的测试。我有两个URL和第一个URL得到一些XML文件,然后存储在邮递员变量作为一个前脚本部分。之后,第二个URL使用此响应并发送另一个POST请求。 但是在成功地从xml中得到结果后,不知何故邮递员没有通过这个请求,而是给出了400。 谢谢