该
@RequestBodyjavadoc的状态
指示方法参数的注释应绑定到Web请求的正文。
它使用的注册实例
HttpMessageConverter将请求主体反序列化为带注释的参数类型的对象。
和
@RequestParamjavadoc的状态
指示方法参数应绑定到Web请求参数的注释。
Spring将请求的主体绑定到以注释的参数
@RequestBody
。Spring将来自请求主体的请求参数(URL编码的参数)绑定到你的方法参数。Spring将使用参数的名称,即。name,以映射参数。
参数按顺序解析。首先
@RequestBody
处理。spring会消耗掉所有的HttpServletRequest InputStream
。然后,当它尝试解析@RequestParam
默认情况下的时required
,查询字符串中没有请求参数,也没有请求正文的剩余内容,即。没有。因此失败400,因为处理程序方法无法正确处理请求。处理程序@RequestParam首先执行操作,读取可以
HttpServletRequest InputStream
映射请求参数的内容,即。整个查询字符串/网址编码的参数。这样做并获取abc映射到参数的值name。@RequestBody
运行处理程序时,请求主体中没有任何内容,因此使用的参数为空字符串。处理程序@RequestBody读取主体并将其绑定到参数。然后,的处理程序
@RequestParam
可以从URL查询字符串获取请求参数。用于
@RequestParam
从正文和URL查询字符串读取的处理程序。通常会将它们放在中Map
,但是由于参数类型为String
,Spring会将序列号Map
分隔为逗号分隔的值。@RequestBody
然后,处理程序再也没有从身体读取的内容了。



