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