前后端交互 | 传递参数的方式

目录

GET请求两种方式

第一种:?& 形式

第二种:不使用?或者 &进行 传递参数

POST请求 

小结:

get和post的使用情况

传参数重复


传参数:目前共有三种传递参数的方式

GET请求两种方式

第一种:?& 形式

java方法中入参什么注解都没有,适用于参数比较少的时候

例子:localhost:8080/school/student?name=张三&age=18

代码如下:

@GetMapping("/student")
public String get(String name,Integer age){
        
        return "success";
}

缺点:参数较多的时候可能会丢失参数,因为url有长度限制

第二种:不使用?或者 &进行 传递参数

适用于参数比较少

  • localhost:8080/school/student/张三/18

这样传值,代码举例如下,它会通过@PathVariable注解得到参数中的信息,注意的是,参数的位置不能够乱,参数必须一一对应

适用于:参数比较少,并且是单独的,(两个参数没有关联)

还适用于动态接口(应用场景:统计调用接口用户),写法如下:

@GetMapping("/{who}get-order/{orderNo}/{orderName}")
public String get(@PathVariable("orderNo") String no,
                  @PathVariable("orderName") String name,
                  @PathVariable("who") String who){
        
        System.out.println("谁调用了此接口:"+" " +who);
        return orderNo+orderName;
}

 如果说,想要参数不是必须传值的话 可以加上 required = false 设置属性可以为空

@GetMapping("/get-order/{orderNo}/{orderName}")
public String get(@PathVariable(value = "orderNo",required=false) String no,
                  @PathVariable("orderName",required=false) String name){
        
   
        return orderNo+orderName;
}

POST请求 

适用于当我们的参数特别多的时候

@Requestbody这个注解能够将拿到json数据,并且反序列化成java对象,前端传值一般为json数据,所以一般我们在参数中加上此注解,例子如下:

@PostMapping("/student")
public String post(@RequestBody Student student){

        return student.toString();
}

 上述写法中json必须和实体类在属性上必须一一对应,可能会因为参数的类型出现报错,可以采用以下的方式解决

@PostMapping("/student")
public String post(@RequestBody JSONObject jsonObject){

        String name = jsonObject.getString("name");

        return student.toString();
}

 在传值上,使用 @RequestBody JSONObject jsonObject 表示将请求体中的 JSON 数据绑定到 JSONObject 对象中,使用 @RequestBody Student student 则表示将请求体中的 JSON 数据解析为 Student 对象。对于 JSONObject 对象,我们可以使用 JSONObject 类中的方法解析 JSON 数据,而对于 Student 对象,我们可以直接使用 Student 类中的属性和方法访问学生对象的相关信息。

小结:

get和post的使用情况

因为get适用于参数较短的情况。因此一般用在查询的接口中,post一般用于数据的上传

post传值较为get更为可靠

传参数重复

第一种方式的参数是可以重复的,而且对于参数的位置也没有过多的要求,比如:localhost/school/student?name=张&age=18&name=李

上面的请求中获取的name为String类型参数是会同时得到两个的,name=张,李

但是如果是整形则会取第一个

然而在post请求中的json出现重复的时候,会发生覆盖现象,比如json为:

{“name”:“张”,"age":"18","name":"李"}

这样得到的name为 李,后面的json会覆盖前面的数据 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADRU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值