常见的接口请求类型和@RequestBody、@RequestParam的使用


1. 常见的接口请求类型:


       常见的接口有如下四种类型,分别是含有查询参数的接口,表单类型的接口,json类型的接口以及含有上传文件的接口。

1.1 含有查询参数的

在这里插入图片描述

1.2 表单类型的

在这里插入图片描述

1.3 json 类型的

在这里插入图片描述

1.4 包含上传文件的

在这里插入图片描述


2. @RequestParam、@RequestBody


2.1 @RequestParam

   @RequestParam主要用于将请求参数区域的数据映射到控制层方法的参数上。
   @RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性。
   @RequestParam也可用于其它类型的请求,例如:POST、DELETE等请求。

2.2 @RequestBody

       注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。

       一般情况下后端会有一个参数实体类加上 @RequestBody 注解来接收 application/json 请求类型的数据。如果请求是 application/json 类型,对应的实体类没有加 @RequestBody 注解,就会接不到相关参数。

2.3 案例


(1) post 请求 application/json 类型 body 中的请求体数据和 拼在 url 后面的参数是可以同时存在的:

在这里插入图片描述
在这里插入图片描述

后端接口这样接收数据:

	@PostMapping("updateTableDataDL")
    public AjaxResult updateTableDataDL(@RequestBody List<TableDataParam> dataParamList, String rowGuid) {
        int result = 0;
        try {
            result = reportTableService.updateTableDataDL(dataParamList, rowGuid);
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        return toAjax(result);
    }


(2)文件上传请求携带表单的其他参数

在这里插入图片描述
后端接口这样接收数据:

	@PostMapping("/add")
    public AjaxResult addcar(TzCar tzCar, HttpServletRequest request) {
        // 返回此车辆的 rowGuid
        int result = 0;
        try {
            result = tzCarService.insertTzCar(tzCar, request);
        } catch (Exception e) {
            logger.error(e.getMessage());
            return AjaxResult.error(e.getMessage());
        }
        return toAjax(result);
    }

  其中 TzCar 就是表单的其他参数封装的参数实体类,两个文件 file1、file2 是在 HttpServletRequest 中接收。具体解析可以看这边多个文件上传+表单数据同时请求的前后端处理
 
暂时到这里、后续再更新

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: axios是一种用于发送HTTP请求JavaScript库。它提供了两种发送POST请求的方式:一种是通过请求体发送数据,另一种是通过URL参数发送数据。下面是对这两种方式以及前端axios发送请求与后端Spring Boot应用程序如何接收请求的解释。 1. 请求体方式: 通过axios的post方法发送POST请求时,可以将数据作为请求体的一部分发送给后端。在发送请求时,我们可以将数据以对象的形式传递给axios的post方法。 例如,在前端使用axios发送请求: ```javascript axios.post('/api/user', { username: 'John', password: '123456' }) ``` 在后端的Spring Boot应用程序中,我们可以使用`@RequestBody`注解来接收请求体中的数据。通过该注解,Spring Boot会自动将请求体中的JSON数据映射到对应的Java对象上。 例如,在后端的控制器中接收请求: ```java @PostMapping("/api/user") public ResponseEntity<?> createUser(@RequestBody User user) { // 处理接收到的用户数据 ... } ``` 2. URL参数方式: 通过axios的post方法发送POST请求时,也可以将数据作为URL参数的一部分发送给后端。在发送请求时,我们可以通过在URL中添加查询参数的方式将数据传递给axios的post方法。 例如,在前端使用axios发送请求: ```javascript axios.post('/api/user?username=John&password=123456') ``` 在后端的Spring Boot应用程序中,我们可以使用`@RequestParam`注解来接收URL参数中的数据。 例如,在后端的控制器中接收请求: ```java @PostMapping("/api/user") public ResponseEntity<?> createUser(@RequestParam String username, @RequestParam String password) { // 处理接收到的用户名和密码 ... } ``` 这样,我们就可以通过axios的post方法以两种不同的方式发送POST请求,并通过`@RequestBody`或`@RequestParam`在后端的Spring Boot应用程序中接收请求数据。 ### 回答2: axios post请求方式有两种,一种是普通post请求,另一种是使用FormData对象进行post请求。这两种方式可以分别用@RequestParam和@RequestBody接收请求参数。 普通post请求方式可以通过设置请求头`'Content-Type': 'application/json'`来发送json格式的数据,并使用axios的data参数传递请求参数。后端接口可以使用@RequestBody注解来接收请求参数。@RequestBody注解将请求体中的数据绑定到一个对象上,可以直接使用该对象进行操作。 示例代码如下: 前端代码: ```javascript axios.post('/api/post', { key1: value1, key2: value2 }, { headers: { 'Content-Type': 'application/json' } }).then(response => { console.log(response.data); }).catch(error => { console.log(error); }); ``` 后端代码: ```java @RestController public class PostController { @PostMapping("/api/post") public ResponseEntity<?> handlePostRequest(@RequestBody PostData postData) { // 处理post请求参数 // ... return ResponseEntity.ok("Success"); } } public class PostData { private String key1; private String key2; // 省略getter和setter方法 } ``` 使用FormData对象进行post请求时,可以使用axios的data参数传递FormData对象。设置请求头`'Content-Type': 'multipart/form-data'`。后端接口可以使用@RequestParam注解来接收请求参数。@RequestParam注解用于获取请求参数的值。 示例代码如下: 前端代码: ```javascript const formData = new FormData(); formData.append('key1', value1); formData.append('key2', value2); axios.post('/api/post', formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(response => { console.log(response.data); }).catch(error => { console.log(error); }); ``` 后端代码: ```java @RestController public class PostController { @PostMapping("/api/post") public ResponseEntity<?> handlePostRequest(@RequestParam("key1") String key1, @RequestParam("key2") String key2) { // 处理post请求参数 // ... return ResponseEntity.ok("Success"); } } ``` 以上就是使用axios post发送两种请求方式,并使用@RequestParam和@RequestBody接收请求参数的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值