文章目录
- @RequestBody注解
- 基本概念
- 在postman里如何发送接收端带有@RequestBody的请求?
@RequestBody注解
基本概念
扩展:
http报文会包含四部分,第一部分是请求行,第二部分是请求头,第三部分是空行,第四部分是请求体。
对于POST之类的请求来说,它主要是用来传输数据的,它的参数主要是写在请求体里面的;
而对于GET请求来说,它不是用来传输数据的,它主要是用来获取数据的,虽然没有命令禁止参数信息写在请求体里面,但是我们一般不会在请求体里面写东西,对于GET请求来说一般把它的参数信息写在请求行的uri里面。
@RequestBody注解作用
http请求中,在http报文的请求体中,通常会包含多个传输的参数信息(GET请求除外),可能这些参数信息会有很多,但是对应到我们Controller控制器中接收http请求的方法,我们并不想要在方法里面写多个参数怎么办呢?那么这个时候就可以借助@RequestBody注解去把请求体里面的多个参数封装成一个对象,如下图:
但是也并
- 不是http报文的请求体里面的每个参数都能够封装进Payment对象里面,要求请求体里面的参数名字必须要和Payment对象里面的属性名字一致。
- 前端必须使用请求体里面包含参数的方法。因为GET请求方法的请求体里面不包含参数,如果后端想要让@RequestBody生效,前端不能使用GET请求方法;必须使用包含请求体的方法比如说POST方法。
- 前端使用的http请求,请求头里面的Content-Type的值必须要是application/json或application/xml。
在postman里如何发送接收端带有@RequestBody的请求?
在我们的idea项目里面的controller控制器下面,接收参数的地方使用了@RequestBody注解,如下图:
那么我们在postman里面发送http请求的时候需要什么规范呢?首先需要把请求头的content-type设置为application/json,如下图:
注意我们的参数必须要写在Body下面,如下图:
千万不能写到Params下面 如下图:
这样写请求体中没有参数,参数在uri中,这样@RequestBody就不能把http报文请求体中的参数封装到后面的参数中了。因此一定不能这样写。
还有最后一个要求是,必须使用的是POST请求方法,如果使用了@RequestBody,那么我们controller控制器方法就要写成POST请求方法了,如下图: