前后端交互,传递多个对象的解决方案之一

在Web开发中,使用Vue和Axios向SpringBoot后端传递参数时,应注意前端发送的对象不应包含其他对象,否则可能导致错误。文章提供了一个示例,展示了如何序列化对象以进行安全传输,并在后端如何接收和处理这些参数。
摘要由CSDN通过智能技术生成

目录

系统环境

前端部分

后端部分

接收参数的类

controller

踩坑提醒 

前端->后端,对象不可包含对象



系统环境

Web项目,VUE前端,Axios方法,SpringBoot+Mybatis后端,MySQL数据库

前端部分

// 处理参数(采用了深度复制)
var userInfoDto = JSON.parse(JSON.stringify(this.userInfo));
var ldcdto = JSON.parse(JSON.stringify(this.userInfo.ldcdto));
var articleDto = JSON.parse(JSON.stringify(this.article));
// 访问后端
await this.$axios.post('http://localhost:xxxx/oa/LDC/updateLDC', {
    userInfoDto: userInfoDto,
    ldcdto: ldcdto,
    articleDto: articleDto,
})
    .then(response => {
        console.log(response.data);
    })
    .catch(error => {
        console.error(error);
    });

后端部分

接收参数的类

package com.sdcw.program.controller.param;
​
import com.sdcw.program.dto.ArticleDto;
import com.sdcw.program.dto.LikesDislikesCollectionsDto;
import com.sdcw.program.dto.UserInfoDto;
​
public class UpdateLDCParams {
    private UserInfoDto userInfoDto;
    private LikesDislikesCollectionsDto ldcdto;
    private ArticleDto articleDto;
​
    public UserInfoDto getUserInfoDto() {
        return userInfoDto;
    }
​
    public void setUserInfoDto(UserInfoDto userInfoDto) {
        this.userInfoDto = userInfoDto;
    }
​
    public LikesDislikesCollectionsDto getLDCDto() {
        return ldcdto;
    }
​
    public void setLDCDto(LikesDislikesCollectionsDto LDCDto) {
        this.ldcdto = LDCDto;
    }
​
    public ArticleDto getArticleDto() {
        return articleDto;
    }
​
    public void setArticleDto(ArticleDto articleDto) {
        this.articleDto = articleDto;
    }
}

controller

package com.sdcw.program.controller;
​
import com.sdcw.program.controller.param.UpdateLDCParams;
import com.sdcw.program.dto.ArticleDto;
import com.sdcw.program.dto.LikesDislikesCollectionsDto;
import com.sdcw.program.dto.UserInfoDto;
import com.sdcw.program.service.LikeDislikeCollectionService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
​
import javax.annotation.Resource;
import javax.naming.ldap.LdapContext;
​
@RestController
@RequestMapping("/LDC")
public class LikeDislikeCollectionController {
    @Resource
    private LikeDislikeCollectionService LDCService;
​
    // 更新点赞、点踩、收藏
    @RequestMapping("/updateLDC")
    public int updateLDC(@RequestBody UpdateLDCParams params) {
        // 提取参数
        UserInfoDto userInfoDto = params.getUserInfoDto();
        LikesDislikesCollectionsDto LDCDto = params.getLDCDto();
        ArticleDto articleDto = params.getArticleDto();
        // 设置参数
        userInfoDto.setLDCDto(LDCDto);
        userInfoDto.setArticleDto(articleDto);
        int rst = LDCService.updateLDC(userInfoDto);
        return rst;
    }
}

踩坑提醒 

前端->后端,对象不可包含对象

前端给后端传递参数时,如果你传递的是一个对象,则这个对象里不可再包含一个对象,否则后端会报错。但是后端给前端返回结果时是没有这个限制的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值