SpringMvc参数传递(Post)

 Get和Post的区别还是很大的,如果按照标准,Get请求一般是不携带参数的,并且get携带在请求体种的参数是会被忽略的(postman工具除外)。Post请求一般才被用来携带参数

 1.普通参数接收

1.请求url

http://127.0.0.1:8080/save?name=ADong&age=20

 2.前端请求代码

<script>
    const request = axios.create({
        baseURL: 'http://127.0.0.1:8080',
        timeout: 1000,
    });
    let person = {
        name:'ADong',
        age:'20'
    }
    request.post('/save',null,{
        params:person,
        headers:{
            'Content-Type':'x-www-form-urlencoded'
        }
    })
</script>

3.后端接收代码

@RestController
@RequestMapping
public class BasicController {

    @PostMapping("/save")
    public String getUserName(@RequestParam(value = "name") String userName, String age) {
        System.out.println("Post 普通参数接收 =>" + userName + " - " + age);
        return "ok";
    }

}

2.Pojo参数接收

1.请求url

http://127.0.0.1:8080/save?name=ADong&age=20

2.前端请求代码

<script>
    const request = axios.create({
        baseURL: 'http://127.0.0.1:8080',
        timeout: 1000,
    });
    let person = {
        name:'ADong',
        age:'20'
    }
    request.post('/save',null,{
        params:person
    })
</script>

 3.后端接收代码

@PostMapping("/save")
    public String getUserName(User user) {
        System.out.println("Post Pojo参数接收 =>" + user.toString());
        return "ok";
    }

3.数组参数接收

要使用qs库的情况是当后端服务器要求application/x-www-form-urlencoded格式的数据,并且要传递复杂的对象或数组作为请求体时。否则,如果后端服务器接收application/json格式的数据,并且可以正确处理复杂数据,直接使用axios的data参数传递数据是更方便的。

1.请求url

 http://127.0.0.1:8080/save?likes=a&likes=b&likes=c

 2.前端请求代码

<script>
    var qs = Qs 
    const request = axios.create({
        baseURL: 'http://127.0.0.1:8080',
        timeout: 1000,
    });
    let likes = ['a','b','c']
    request.post('/save',null,{
        params:{
            likes
        },
        paramsSerializer: function (params) {
            return qs.stringify(params, { arrayFormat: 'repeat' })
        },

    })
</script>

3.后端接收代码

@PostMapping("/save")
    public String getUserName(String[] likes) {
        System.out.println("Post 数组参数接收 =>" + Arrays.toString(likes));
        return "ok";
    }

4.集合参数接收

1.请求url

http://127.0.0.1:8080/save?likes=a&likes=b&likes=c

2.前端请求代码

<script>
    var qs = Qs 
    const request = axios.create({
        baseURL: 'http://127.0.0.1:8080',
        timeout: 1000,
    });
    let likes = ['a','b','c']
    request.post('/save',null,{
        params:{
            likes
        },
        paramsSerializer: function (params) {
            return qs.stringify(params, { arrayFormat: 'repeat' })
        },

    })
</script>

3.后端接收代码

  • 由于List是引用类型,系统会默认造List的对象set赋值,因此需要使用@RequestParam使其作为集合的数据出现

@PostMapping("/save")
    public String getUserName(@RequestParam List<String> likes) {
        System.out.println("Post 集合参数接收 =>" + likes);
        return "ok";
    }

 5.JSON数据格式接收

1.请求url

http://localhost:8080/save

2.前端请求代码

<script>
    const request = axios.create({
        baseURL: 'http://127.0.0.1:8080',
        timeout: 1000,
    });
    let likes = ['a','b','c']
    request.post('/save',likes)
</script>

3.后端接收代码

@PostMapping("/save")
    public String save(@RequestBody List<String> likes) {
        System.out.println("Post Json集合参数接收 =>" + likes);
        return "save:ok";
    }

6.JSON格式POJO参数接收

1.请求url

http://localhost:8080/save

2.前端请求代码

<script>
    const request = axios.create({
        baseURL: 'http://127.0.0.1:8080',
        timeout: 1000,
    });
    let person = {
        name:'aDong',
        age:20
    }
    request.post('/save',person)
</script>

 3.后端接收代码

@PostMapping("/save")
    public String save(@RequestBody User user) {
        System.out.println("Post JsonPojo参数接收 =>" + user.toString());
        return "save:ok";
    }

7.JSON格式集合Pojo参数接收

1.请求url

http://localhost:8080/save

2.前端请求代码

<script>
    const request = axios.create({
        baseURL: 'http://127.0.0.1:8080',
        timeout: 1000,
    });
    let persons = [
        {name:'aDong',age:20},
        {name:'srd',age:21}
    ]
    request.post('/save',persons)
</script>

 3.后端接受代码

@PostMapping("/save")
    public String save(@RequestBody List<User> user) {
        System.out.println("Post Json集合Pojo参数接收 =>" + user);
        return "save:ok";
    }

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值