Springboot中http请求的接收方法

本文用来记录学习传参过程中的琐碎知识点

首先是springboot中POST、GET、@RequestBody和@RequestParam区别

@RequestParam接收的参数是来自HTTP请求体或请求url的QueryString中。

@RequestParam有三个配置参数:

  • required 表示是否必须,默认为 true,必须。
  • defaultValue 可设置请求参数的默认值。
  • value 为接收url的参数名(相当于key值)。

@RequestParam用来处理 Content-Typeapplication/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性**。@RequestParam也可用于其它类型的请求,例如:POST、DELETE等请求**。

但是@RequestParam不能接受JSON字符串

@RequestBody接收的参数是来自requestBody中,即请求体

一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/jsonapplication/xml等类型的数据。

GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。

POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type

后端解析RequestBody中的json数据的时候可以用实体类,也可以用别的方式解析

比如要传的json数据如下

1
2
3
4
5
6
7
8
9
10
11
//比如要传的是
[
{
"id":1,
"name":"fyf"
},
{
"id":2,
"name":"xxx"
}
]

上面的json数据是一个List数组内嵌套着map对象,那解析的时候使用

1
List<Map<String,String>> MapList

参考自https://blog.csdn.net/weixin_38004638/article/details/99655322