@RequestParam
注解@RequestParam接管的参数是来自HTTP申请体或申请url的QueryString中。
RequestParam能够承受简略类型的属性,也能够承受对象类型。
@RequestParam有三个配置参数:
required
示意是否必须,默认为true
,必须。defaultValue
可设置申请参数的默认值。value
为接管url的参数名(相当于key值)。
**@RequestParam用来解决 Content-Type
为 application/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/json
、application/xml
等类型的数据。
就application/json
类型的数据而言,应用注解@RequestBody能够将body外面所有的json数据传到后端,后端再进行解析。
GET申请中,因为没有HttpEntity,所以@RequestBody并不实用。
POST申请中,通过HttpEntity传递的参数,必须要在申请头中申明数据的类型Content-Type,SpringMVC通过应用
HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,而后绑定到相应的bean上。
发表回复