关于web:RequestBody-和-RequestParam

11次阅读

共计 990 个字符,预计需要花费 3 分钟才能阅读完成。

@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 上。

正文完
 0