关于web:RequestBody-和-RequestParam

@RequestParam

注解@RequestParam接管的参数是来自HTTP申请体或申请url的QueryString中。

RequestParam能够承受简略类型的属性,也能够承受对象类型。

@RequestParam有三个配置参数:

  • required 示意是否必须,默认为 true,必须。
  • defaultValue 可设置申请参数的默认值。
  • value 为接管url的参数名(相当于key值)。

**@RequestParam用来解决 Content-Typeapplication/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性,
也能够接管​​​​​​​application/json。@RequestParam也可用于其它类型的申请,例如:POST、DELETE等申请**。

所以在postman中,要抉择body的类型为 x-www-form-urlencoded,这样在headers中就主动变为了 Content-Type : application/x-www-form-urlencoded 编码格局。

然而如果传整个对象,这样会发现不反对批量插入数据,如果改用 json 字符串来传值的话,类型设置为 application/json,点击发送的话,会报错,后盾接管不到值,为 null

这种时候就能够采纳@RequestBody

@RequestBody

顾名思义,注解@RequestBody接管的参数是来自requestBody中,即申请体。个别用于解决非 Content-Type: application/x-www-form-urlencoded编码格局的数据,比方:application/jsonapplication/xml等类型的数据。

application/json类型的数据而言,应用注解@RequestBody能够将body外面所有的json数据传到后端,后端再进行解析。

GET申请中,因为没有HttpEntity,所以@RequestBody并不实用。

POST申请中,通过HttpEntity传递的参数,必须要在申请头中申明数据的类型Content-Type,SpringMVC通过应用

HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,而后绑定到相应的bean上。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理