前端后参数传递时的@PathVariable,@RequestBody,@RequestParam用法

前端后参数传递时的@PathVariable,@RequestBody,@RequestParam

由于写controller时经常弄混 @PathVariable @RequestParam @RequestBody 和什么都不加的使用情况,特此备注.

在这里插入图片描述

上图是一个简单分类,下面会详细讲解各个用法

1.@PathVariable和@RequestParam

@RequestParam

前端发送请求

http://localhost:8080/backend/user?name=tom

后端接收

@RestController
@RequestMapping(value = "backend")
public class Controller {
    @GetMapping("/user")
    public void getName(@RequestParam(required = false,value = "name",defaultValue = "jack") String name) {
        System.out.println("=====" + name);
    }
}

输出:=====tom

@PathVariable

前端发送请求

http://localhost:8080/backend/user/tom

后端接收

@RestController
@RequestMapping(value = "backend")
public class Controller {

    @GetMapping("/user/{name}")
    public void getName(@PathVariable String name) {
        System.out.println("=====" + name);
    }
}

输出:=====tom

2.@RequestBody 和 什么都不加

什么都不加

前端发送

在这里插入图片描述

后端接收

@RestController
@RequestMapping(value = "backend")
public class Controller {
    @PostMapping("/user")
    public void getName(User user) {
        System.out.println("=====" + user.getName() + "===" + user.getAge());
    }

    @Data
    public class User {
        private String name;
        private int age;
    }
}

@RequestBody

前端请求

在这里插入图片描述

后端接收

@RestController
@RequestMapping(value = "backend")
public class Controller {
    @PostMapping("/user")
    public void getName(@RequestBody User user) {
        System.out.println("=====" + user.getName() + "===" + user.getAge());
    }

    @Data
    public static class User {
        private String name;
        private int age;
    }
}

3.前端传参

前端一般使用js的axios, axios 是一个流行的 JavaScript HTTP 客户端库,用于在浏览器和 Node.js 中发送 HTTP 请求。它提供了一种简洁、灵活和易于使用的方式来与服务器进行数据交互。

常用使用方式:

1.get

axios.get(`${this.baseUri}/${id}`);

生成请求URL:https://api.example.com/users/123

axios.get(`${this.baseUri}/page`, { params})

生成请求URL:https://api.example.com/page?page=1&limit=10

2.post

axios.post(`${this.baseUri}/`, params);

生成请求URL:https://api.example.com/
请求体body: { name: 'John', age: 25 }

其他put,delete等请求都是基于此的变形,可自行测试.

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: @RequestParam、@PathVariable、@RequestBody 都是 Spring MVC 中用于处理请求参数的注解,它们的主要区别在于: 1. @RequestParam:用于获取请求参数的值,常用于 GET 方法中,可以指定参数名称和是否必须,如果不指定参数名称,则使用方法参数名作为参数名。示例代码: ```java @GetMapping("/user") public String getUser(@RequestParam("id") Long id) { // ... } ``` 2. @PathVariable:用于获取 URL 中的参数,常用于 RESTful API 中,可以将 URL 中的一部分作为方法参数。示例代码: ```java @GetMapping("/user/{id}") public String getUser(@PathVariable Long id) { // ... } ``` 3. @RequestBody:用于获取请求体中的参数,常用于 POST 方法中,可以将请求体中的 JSON、XML、文本等数据转化为 Java 对象。示例代码: ```java @PostMapping("/user") public String createUser(@RequestBody User user) { // ... } ``` 综上所述,三个注解都是用于获取请求参数的,但是 @RequestParam 主要用于获取 URL 中的参数,@PathVariable 主要用于获取 URL 中的一部分参数,@RequestBody 主要用于获取请求体中的参数。 ### 回答2: @RequestParam、@PathVariable和@RequestBody是Spring框架中常用的注解,用于接收前端传递的参数。 @RequestParam注解用于获取请求参数的值,常用于GET请求方式或者POST请求方式中参数类型为application/x-www-form-urlencoded的请求。例如,接收前端传递的name参数: ``` @GetMapping("/hello") public String hello(@RequestParam String name) { return "Hello " + name; } ``` @PathVariable注解用于获取URL路径中的参数值,常用于RESTful风格的接口。例如,接收前端传递的id参数: ``` @GetMapping("/users/{id}") public User getUser(@PathVariable Integer id) { return userService.getUserById(id); } ``` @RequestBody注解用于获取请求体中的参数值,常用于POST请求方式中参数类型为application/json的请求。例如,接收前端传递的JSON格式的用户对象: ``` @PostMapping("/users") public User addUser(@RequestBody User user) { return userService.addUser(user); } ``` 这三个注解的区别在于获取参数的方式不同:@RequestParam获取请求参数的值,@PathVariable获取URL路径中的参数值,@RequestBody获取请求体中的参数值。根据请求的方式和参数类型,选择适合的注解来获取参数值。 ### 回答3: @RequestParam、@PathVariable、@RequestBody 是用于处理请求参数的注解,主要的区别如下: 1. @RequestParam:用于从请求参数中获取特定的值。它可以指定参数的名称、默认值、是否必须等属性。通常用于处理表单提交或者URL参数的请求。示例代码: ```java @GetMapping("/user") public String getUser(@RequestParam("id") int userId) { // 处理逻辑 return "success"; } ``` 2. @PathVariable:用于从URL路径中获取特定的值。它可以指定路径中的变量名称,将其作为方法的参数进行接收。通常用于RESTful风格的URL设计,将参数直接映射到方法的参数中。示例代码: ```java @GetMapping("/user/{id}") public String getUser(@PathVariable("id") int userId) { // 处理逻辑 return "success"; } ``` 3. @RequestBody:用于从请求体中接收数据,并将其绑定到指定的对象上。它可以将请求体中的JSON或XML等格式的数据转换为Java对象。通常用于处理POST或PUT请求,将请求体中的数据转化为对象进行处理。示例代码: ```java @PostMapping("/user") public String addUser(@RequestBody User user) { // 处理逻辑 return "success"; } ``` 综上所述,@RequestParam 主要用于获取请求参数,@PathVariable 用于获取URL路径中的参数,@RequestBody 用于获取请求体中的数据。它们分别适用于不同的获取请求参数的场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值