axios和SpringMVC数据交互(一维二维数组,JSON/form形式,@RequestBody/@RequestParam)
创始人
2024-03-21 17:32:25
0

目录

  • 需求
  • 环境准备
    • 前端
    • 后端
  • 成功实现的案例
    • 以JSON形式发送double数组
    • 以JSON形式发送对象,对象中有数组
    • 以JSON形式发送对象,对象中有二维数组
    • 以x-www-form-urlencoded形式发送一维数组

需求

前端或postman发送数组,后端controller做为入参接收

环境准备

前端

// src/utils/request.js
const axiosInstance = axios.create({baseURL: 'http://localhost:8081/',// baseURL: 'http://106.14.92.82:8081/',timeout: 10000
})
export default axiosInstance
import request from 'src/utils/request'
request({method: 'post',url: '/tests',headers: { 'Content-Type': 'application/json' },data: 要发送的数据,}).then((res) => {console.log(res) // 打印一下返回的结果})

后端

springboot spingmvc

成功实现的案例

以JSON形式发送double数组

不是k-v,直接是一个数值数组

  • 前端
request({method: 'post',url: '/tests',headers: { 'Content-Type': 'application/json' },data: JSON.stringify([1,2,3]),}).then((res) => {console.log(res)})
  • postman(与上方的前端代码等效)
    和前端一个效果

  • 后端
    JSON要用@RequestBody去接收

    @PostMapping(value = "/tests")public void test(@RequestBody List BS){log.info(BS); // 打印 [1.0, 2.0, 3.0]}
    @PostMapping(value = "/tests")public void locateByFang(@RequestBody String BS){log.info(BS); // [1,2,3]      这是个长度为7的String}

以JSON形式发送对象,对象中有数组

  • 前端
const data0 = {'ld': [1,2,3],'s':'一个字符串'}
request({method: 'post',url: '/tests',headers: { 'Content-Type': 'application/json' },data: data0}).then((res) => {console.log(res)})
  • postman
    在这里插入图片描述

  • 后端

public class TestEntity
{ // 记得补全getter setter toStringList ld; // 注意@RequestBody不能自动映射大写字母开头的属性,这里都是小写,大写的需要@JsonProperty("XX")String s;}
@PostMapping(value = "/tests")public void test(@RequestBody TestEntity BS){log.info(BS); // testEntity{ld=[1.0, 2.0, 3.0], s='一个字符串'}log.info(BS.getLd().size()); // 3log.info(BS.getS()); // 一个字符串}

以JSON形式发送对象,对象中有二维数组

  • 前端或postman
    data0或者postman框中的文本改为
{"ld":[[1,2,3],[4,5,6],[7,8,9]],"s":"一个字符串"
}
  • 后端
    把TestEntity的ld改成List>类型
log.info(BS); // testEntity{ld=[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], s='一个字符串'}
log.info(BS.getLd().size());// 3
log.info(BS.getLd().get(0).size()); // 3
log.info(BS.getS()); // 一个字符串

以x-www-form-urlencoded形式发送一维数组

  • 前端
let oneDimArr = [1,2,3]
const usp = new URLSearchParams();
usp.append('BS', oneDimArr);
request({method: 'post',url: '/tests',headers: {'Content-Type': 'application/x-www-form-urlencoded'},data: usp
})
  • postman
    在这里插入图片描述

  • 后端

@PostMapping(value = "/tests")
public void locateByFang(@RequestParam(value="BS") double[] BS){for(double s : BS) log.info(s);
}
// 或者
@PostMapping(value = "/tests")
public void locateByFang(@RequestParam(value="BS") List BS){log.info(BS);
}

暂时没有实现使用x-www-form-urlencoded传输二维数组,3×3的数组到了后端变成了9×1的数组

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...