前端传回参数的三种方法

1.使用?加&来传参

localhost:8080/.../getId?name=zhangsan&id=1234&......

适用于 请求参数较少的时候

缺点:1.请求参数比较多时,可能会丢参数,因为get请求有长度限制。

2.不使用?&传参(不常用)

@PathVariable将 URL 中占位符参数绑定到控制器处理方法的入参中。URL 中的 {xxx} 占位符可以通过 @PathVariable (“xxx”) 绑定到操作方法的入参中。一般与 @RequestMapping (method = RequestMethod.GET) 一起使用

@RequestMapping("/getUserById/{name}")
public String getUser(@PathVariable("name") String name){
    return name;
}

动态接口

@RequestMapping("/{channel}getId/{name}")
public String getUser(@PathVariable("name") String name, @PathVariable("channel") String channel){
    return name + channel;
}

调用地址为:localhost:8080/.../jdgetId/zhangsan

其中入参channel获得的值为:jd;

3.@RequestBody

@PostMapping("/test")
public String test(@RequestBody TestPo testPo){
    return testPo.getName() + "," + testPo.getId();
}

将前端body传回的json反序列化成java对象,属性必须一一对应,否则无法取到;它只能用于接收 POST 请求,因为 GET 方式无请求体。在后端的同一个接收方法里,@RequestBody@RequestParam 可以同时使用

如果前端使用 jQuery,可以使用它的 $.ajax 方法来发送包含 JSON 数据的 POST 请求。

var data = {
    name: '张三',
    age: 25
};
​
$.ajax({
    type: 'POST',
    url: '/addUser',
    data: JSON.stringify(data),
    contentType: 'application/json',
    success: function(response) {
        // ...
    }
});

问题:

1.第一种方式中,参数重复了应该取那个?

http://localhost:8080/test?name=qqq&id=2333&name=eee&id=1111

@GetMapping("/test")
public String test(String name, int id){
    return name + "," + id;
}

其结果为:qqq,eee,2333

也就是说,String类型会组合,int类型会选第一个;

2.第三种方式中,参数重复了应该取那个?

{
    "name":"qqq",
    "id":233,
    "name":"zhangsan",
    "id":4444
}

前端传回json如上

返回结果为:zhangsan,4444 后出现的值会覆盖前面的值

3.第二种传参方式,如何设置非必传参数

@RequestMapping(value = {"/greet", "/greet/{name}"})
public String greet(@PathVariable(required = false) String name) {
    if (name == null) {
        return "Hello, World!";
    } else {
        return "Hello, " + name + "!";
    }
}

如上,设置@PathVariable(required = false),并设置多种url访问

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值