前端传输多个不同对象至后端,如何接收参数

前端传输多个不同对象至后端

方式一、 使用form-urlencoded格式:

需要将对象转换为urlencoded格式,例如使用qs库或其他方式:
前端代码如下:Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
	
	  let data = qs.stringify({
          newBaseMap: JSON.stringify(this.form),
          oldBaseMap: JSON.stringify(this.oldForm)
        })
      
      request({
        url: '/test/modelEdit',
        method: 'post',
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
        },
        data: data
      }).then((response) => {
        console.log("response",response)
      })
	
在后端,首先将接收到的字符串参数反序列化为JSON对象,然后转化为BaseMap对象
	@PostMapping("/test/modelEdit")
	public AjaxResult modelEdit(
	    @RequestParam("newBaseMap") String newBaseMapJson,
	    @RequestParam("oldBaseMap") String oldBaseMapJson
	) {
	    ObjectMapper mapper = new ObjectMapper();
	    BaseMap newBasMap = mapper.readValue(newBaseMapJson, BaseMap.class);
	    BaseMap oldBasMap = mapper.readValue(oldBaseMapJson, BaseMap.class);
		/* ObjectMapper是Jackson库中的核心类,它负责Java对象与JSON之间的序列化和反序列化
		工作。这里的readValue方法是用来进行反序列化的,即将JSON字符串转换成对应的Java对象*/
		
	    // ...处理逻辑...
	}

方式二、 切换为JSON格式

前端代码如下: 'Content-Type': 'application/json;charset=utf-8'
	let data = {
	  newBasMap: JSON.stringify(this.form),
	  oldBasMap: JSON.stringify(this.oldForm)
	};
	
	request({
	  url: '/test/modelEdit',
	  method: 'post',
	  headers: {
	    'Content-Type': 'application/json;charset=utf-8'
	  },
	  data: data
	}).then((response) => {
	  console.log("response", response);
	});
后端接收并解析JSON对象:
@PostMapping("/test/modelEdit")
public AjaxResult modelEdit(@RequestBody Map<String, String> jsonPayload) {
    ObjectMapper objectMapper = new ObjectMapper();

    try {
        String newBaseMapJson = jsonPayload.get("newBaseMap");
        BasMap newBaseMap = objectMapper.readValue(newBasMapeJson, BasMap.class);

        String oldBaseMapJson = jsonPayload.get("oldBaseMap");
        BasMap oldBaseMap = objectMapper.readValue(oldBaseMapJson, BasMap.class);

        // ...处理逻辑...

    } catch (JsonProcessingException e) {
        // 错误处理...
    }
    
    // 返回结果...
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前端使用axios进行多文件上传时,需要使用`FormData`对象来构建上传数据,示例如下: ```javascript const formData = new FormData(); formData.append('file1', file1); formData.append('file2', file2); formData.append('param1', 'value1'); formData.append('param2', 'value2'); axios.post('/api/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(response => { console.log(response); }).catch(error => { console.error(error); }); ``` 在上述示例中,`file1`和`file2`是要上传的文件对象,`param1`和`param2`是要传递的参数后端接收多文件和参数可以使用`MultipartHttpServletRequest`对象来实现。示例如下: ```java @PostMapping("/upload") public String handleFileUpload(HttpServletRequest request) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); // 处理文件上传 for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()) { MultipartFile file = entry.getValue(); String originalFilename = file.getOriginalFilename(); // ... } // 处理参数 String param1 = multipartRequest.getParameter("param1"); String param2 = multipartRequest.getParameter("param2"); // ... return "success"; } ``` 在上述示例中,`MultipartHttpServletRequest`对象可以通过`HttpServletRequest`对象进行类型转换,然后使用`getFileMap()`方法获取上传的文件列表,使用`getParameter()`方法获取上传的参数

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值