@RequestBody(required = false)注解的使用细则

1.什么是@RequestBody

一个用于Spring MVC框架的注解,用于将HTTP请求正文的JSON或XML串行化为Java对象。主要用于接收POST请求,请求体内参数对象。

2.@RequestBody常见属性

  1. required(常用):这个属性用来指定请求体是否是必需的。如果设置为true,那么在处理请求时,请求体是必须的。如果设置为false,则请求体是可选的。除了这个属性,还可以使用required元素来指定是否需要请求体,例如:@RequestBody(required
    = true)。
  2. content:这个属性用于指定处理请求体的内容类型,如"application/json","application/xml"等。当我们在处理复杂的HTTP请求时,可能需要指定内容类型。
  3. value:这个属性用于为生成的JSON或XML添加自定义标签。使用value可以更灵活地为生成的JSON或XML添加自定义标签,从而实现自定义序列化。
  4. defaultValue:当请求体中的数据不存在或为空时,可以使用defaultValue属性指定一个默认值。
  5. type:指定接收的类型,可以是某个类的类型,也可以是某个接口的实现类的类型。

3.@RequestBody和@RequestBody(required = false)使用区别

  1. @RequestBody默认required = true ,请求体必须传,而且不能是空的(即body里面不能够没有内容,如下图所示)在这里插入图片描述
  2. @RequestBody(required = false),请求体里面可以没有内容(需要有{});可以是空的({}都没有),也可以直接勾选none。但是java代码在接收参数时,如果使用的是JSONObject对象,就不能使用JSONObject自带的isEmpty()方法去判断前端请求是否携带了请求体参数。

a. 请求体内有内容(仅有{}这包含在内)是可以正常使用isEmpty()方法请求体内有内容是可以正常使用isEmpty()方法
b. 请求体内没有内容(即为none)是不能使用isEmpty()方法,会报空指针异常
在这里插入图片描述
总结:@RequestBody(required = false) 请求体以传也可以不传,不传的话不能够使用JSONObject自带的isEmpty()方法,(因为该对象没有在堆内存开辟空间),只能用==null判断

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐