共计 990 个字符,预计需要花费 3 分钟才能阅读完成。
@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 上。