@Requestparam、@Pathviriable和@RequestBody区别

39.1 @Requestparam的get请求

@GetMapping("/id_1")
public String getId1(@RequestParam("id") String id){
    System.out.println("id ==========" + id);
    return "id_1请求成功"
}
/** =========== 解析 ========
这里请求的数据 id 会被放在 url 的参数中进行传输,
如:http://localhost:8080/user/id_1?id=1111111
*/

在这里插入图片描述

39.2 @PathVariable的get请求

@GetMapping("/id_2/{id}")
public String getId2(@PathVariable("id") String id){
    System.out.println("id ==========" + id);
    return "id_2请求成功"
}
/** =========== 解析 ========
这里请求的数据 id 会被放在 url 的地址中进行传输,
如:http://localhost:8080/user/id_2/22222
*/

在这里插入图片描述

39.3 @Requestparam的post请求

@PostMapping("/id_3")
public String getId3(@RequestParam("id") String id){
    System.out.println("id ==========" + id);
    return "id_3请求成功:" + id;
}
/** =========== 解析 ========
这里请求的数据 id 会被放在 请求体 中进行传输,
如:http://localhost:8080/user/id_3
传输的参数放到请求体中!!!!!!
*/

使用请求体的Body进行参数的传输(body ----- form-data)!!!

在这里插入图片描述

使用请求体的Body进行参数的传输(Body------x-www-form-urlencoded)
在这里插入图片描述

39.4 @PathVariable的post请求

@PostMapping("/id_4/{id}")
public String getId4(@PathVariable("id") String id){
    System.out.println("id ==========" + id);
    return "id_4请求成功:" + id;
}
/** =========== 解析 ========
这里请求的数据 id 会被放在 url 的地址中进行传输,
如:http://localhost:8080/user/id_4/23145
*/

在这里插入图片描述

结论:不管是Get还是Post请求都是在 url 中传输数据!!!!

39.5 总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEc9eqZC-1656169991240)(D:\typora\images\image-20220430144514614.png)]
注意

  1. 使用@RequestParam的Get请求,但是数据却放在请求体中,虽然可以运行,但是最好别这样做!因为Get请求表示参数数据最好放请求头中。
  2. 同理使用@RequestParam的Post请求,但是数据却放在请求头中,虽然可以运行,但是最好别这样做!因为Post请求表示参数数据最好放请求体中。

39.6 @RequestBody请求复杂对象 [Post]

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的)。

所以@RequestBody对应的是Post请求

用于请求复杂对象

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int age;
    private String name;
    private String address;
}
@PostMapping("getUser1")
public String getUser5(@RequestBody User user){
    System.out.println(user);
    return "请求成功:" + user;
}

请求成功

在这里插入图片描述

39.7@Requestparam 请求复杂对象[Post]

Requestparam 无法请求复杂参数,只能请求基本数据类型,int、String、Long、List等等

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int age;
    private String name;
    private String address;
}
@PostMapping("getUser2")
public String getUser6(@Requestparam User user){
    System.out.println(user);
    return "请求成功:" + user;
}

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值