Vue中传递自定义参数到后端、后端获取数据并使用Map接收参数

目录
  • 1、未进行二次封装之前的操作
    • 1.1 前端调用接口设计
    • 1.2 后端接口设计
  • 2、使用二次封装axios后的设计
    • 2.1 封装的接口类型(只展示关键的接口调用部分)
    • 2.2 前端调用接口设计
    • 2.3 后端接口设计
  • 3、友情提示
  • 4、效果展示

在对axios进行二次封装的时候、为了统一接口的设计。有些传递的参数是直接拼接到URL地址栏中的、但是为了统一管理、不能将传递的参数直接拼接到地址栏中。
如何自定义传递的参数到后端,后端如何获取到这些自定义的参数?如果解决这一问题,我就能随便传递参数,不在局限于将参数拼接到URL中,不局限只能后端的javaBean对象传递表单的形式

1、未进行二次封装之前的操作

1.1 前端调用接口设计

(传递的参数使用拼接的形式):

showAllUserInfo(currentPage, pageSize) {
      //异步请求显示所有数据
      currentPage = currentPage ? currentPage : this.now;
      pageSize = pageSize ? pageSize : this.size;
      axios
        .get("user/findAllUser/" + currentPage + "/" + pageSize)
        .then((res) => {
          if (res.code === 200) {
              this.tableDatas = res.data.result.userList;
              this.total = res.data.result.totals;
         } else {
              _this.$message.error(resp.data.errMessage);
        }
        });
    },

1.2 后端接口设计

    @RequestMapping(
        value = {"/user/findAllUser/{page}/{size}"},
        method = {RequestMethod.GET}
    )
    public Result findAllUser(@PathVariable("page") Integer page, @PathVariable("size") Integer size) {
        int currentPage = page;
        int pageSize = size;
        Map<String, Integer> map = new HashMap();
        map.put("startIndex", (currentPage - 1) * pageSize);
        map.put("pageSize", pageSize);
        List<User> userList = this.userService.findAllUser(map);
        Long totals = this.userService.findUserTotals();
        HashMap<String, Object> result = new HashMap();
        result.put("userList", userList);
        result.put("totals", totals);
        return Result.ok().data("result", result);
    }

2、使用二次封装axios后的设计

2.1 封装的接口类型(只展示关键的接口调用部分)

   findAllUser: (params) => {
        return Get('http://localhost:8282/user/findAllUser', params)
    }

2.2 前端调用接口设计

将要传递的参数放入这里: const params = { page: currentPage, size: pageSize };

    showAllUserInfo(currentPage, pageSize) {
      //异步请求显示所有数据
      currentPage = currentPage ? currentPage : this.now;
      pageSize = pageSize ? pageSize : this.size;
      const params = {
        page: currentPage,
        size: pageSize,
      };
      this.$axios.findAllUser(params).then((res) => {
        if (res.code === 200) {
          this.tableDatas = res.data.result.userList;
          this.total = res.data.result.totals;
        } else {
          _this.$message.error(resp.data.errMessage);
        }
      });
    },

2.3 后端接口设计

   @RequestMapping(
        value = {"/user/findAllUser"},
        method = {RequestMethod.GET}
    )
    public Result findAllUser(@RequestParam Map<String, Object> maps) {
        System.out.println(maps.get("page"));
        System.out.println(maps.get("size"));
        Integer currentPage = Integer.parseInt(maps.get("page").toString());
        Integer pageSize = Integer.parseInt(maps.get("size").toString());
        Map<String, Integer> map = new HashMap();
        map.put("startIndex", (currentPage - 1) * pageSize);
        map.put("pageSize", pageSize);
        List<User> userList = this.userService.findAllUser(map);
        Long totals = this.userService.findUserTotals();
        HashMap<String, Object> result = new HashMap();
        result.put("userList", userList);
        result.put("totals", totals);
        return Result.ok().data("result", result);
    }

3、友情提示

这个真的是巨坑、总是报转换不对、通过以下方式可以将stirng类型的转换为int类型

Integer currentPage = Integer.parseInt(maps.get(“page”).toString());

  • 使用Map接收参数,必须使用@RequestParam修饰。
  • 使用data传递参数,必须使用一个实体类接收参数,而且需要添加注解@RequestBody进行修饰

4、效果展示

到此这篇关于Vue中传递自定义参数到后端、后端获取数据并使用Map接收参数的文章就介绍到这了,更多相关Vue传递参数给后端内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue前端如何向后端传递参数

    目录 前端向后端传递参数 get方法传参 post方法传参 vue前后端传参问题 前端向后端传递参数 get方法传参 get方法传参,我们只需要把要传递的参数拼接到要发送的路径地址后面. 实例 前端: export default {   data () {     return {       name: "david", //要传递的值1       age: 20, //要传递的值2     }   },   methods: {   //在method里面定义一个向后端传递参数

  • vue中get请求如何传递数组参数的方法示例

    前言: vue中在与后端进行数据交互时,使用axios发送请求,不做配置直接使用get请求传递数组类型参数的时候,后端是无法接收数据的,需要对axios一些简单的配置才能让后端完美的接收数组 1.问题 示例代码 let params = { statusList: ['OVERDUE', 'DELAY'] } this.$http.get('/list', params) .then(res => {}) .catch(e => {}) 上述代码在不做配置的时候请求信息为:/list?stat

  • Vue中传递自定义参数到后端、后端获取数据并使用Map接收参数

    目录 1.未进行二次封装之前的操作 1.1 前端调用接口设计 1.2 后端接口设计 2.使用二次封装axios后的设计 2.1 封装的接口类型(只展示关键的接口调用部分) 2.2 前端调用接口设计 2.3 后端接口设计 3.友情提示 4.效果展示 在对axios进行二次封装的时候.为了统一接口的设计.有些传递的参数是直接拼接到URL地址栏中的.但是为了统一管理.不能将传递的参数直接拼接到地址栏中.如何自定义传递的参数到后端,后端如何获取到这些自定义的参数?如果解决这一问题,我就能随便传递参数,不

  • SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式

    目录 前言 获取参数的几种常用注解 一.请求路径参数get请求 二.Body参数POST请求 四.HttpServletRequest 五.参数校检 最终选择交互方式 参考文献 总结 前言 现在大多数互联网项目都是采用前后端分离的方式开发,前端人员负责页面展示和数据获取,后端负责业务逻辑处理和接口封装.当与前端交互的过程当中,常用json数据与前端进行交互,这样想取出前端传送过来的json数据的时候,就需要用到@RequestBody这个注解.@RequestBody注解用于读取http请求的内

  • vue中使用echarts实现动态数据绑定以及获取后端接口数据

    目录 前言 1.柱状图 2.折线图 3.饼状图 4.地图 总结 前言 之前几篇echarts的文章是实现了静态的柱状图.折线图.饼状图.地图,在项目中我们肯定是需要获取后端接口,将后端返回的数据显示在图表上,所以这次就记录一下如何实现echarts的动态数据绑定. 简单来讲,就是从接口获取到的数据,需要在图表的方法里再次定义一下,然后用setOption方法就可以获取到了. 1.柱状图 首先看接口传过来的数据,传过来一个数组,第一条年度2021,数量1,第二条年度2022,数量3 因为柱状图的数

  • element-ui组件中input等的change事件中传递自定义参数

    以select为例,如果select写在循环里,触发change事件时可能不只需要传递被选中项的值,还要传递index过去,来改变同一循环中的其他标签的状态. 下面这样写是无效的: @change="changeStatus(val, index)" <div v-for="(item,index) in itemList"> <el-select v-model="item.value" @change="chang

  • 详解Vue中的自定义指令

    除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令.在Vue里,代码复用的主要形式和抽象是组件.然而,有的情况下,仍然需要对纯 DOM 元素进行底层操作,这时候就会用到自定义指令.本文将详细介绍Vue自定义指令 指令注册 以一个input元素自动获得焦点为例,当页面加载时,使用autofocus可以让元素将获得焦点 .但是autofocus在移动版Safari上不工作.现在注册一个使元素自动获取焦点的指令 指令注册类似于组件注册,包括全局指令和局部指令两

  • vue中通过使用$attrs实现组件之间的数据传递功能

    组件之间传递数据的方式有很多种,之所以有这么多种方式,是为了满足在不同场景不同条件下的使用. 一般有三种方式: props vuex Vue Event Bus 本文介绍的是使用$attrs的方式. 这是$attrs的官网api https://cn.vuejs.org/v2/api/#vm-attrs 这个api是在2.4版本中添加的,那么为什么要添加这个特性呢? 看看官网是怎么解释的 包含了父作用域中不作为 prop 被识别 (且获取) 的特性绑定 ( class  和  style  除外

  • vue中注册自定义的全局js方法

    前端开发的时候,总会需要写一些js方法,在vue框架中为了方便使用,可以考虑注册一个全局的js方法,下面是注册步骤: 1.0 可以在assets文件中的js文件下面新建一个js文件,如:yun.js--- 2.0 在yun.js 上面实现日期格式方法,如下 import Vue from 'vue' const format = (o, format) => { //日期类型 let args = { "M+": o.getMonth() + 1, "d+":

  • vue中如何自定义右键菜单详解

    在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件,如下: <li v-for="item in resourceList" :key="item.id" @click="handleClickFolder(item)" @contextmenu.prevent="openMenu($event,item)" > </li> 在页面编写右键菜单内容: <ul v-show=&q

  • vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解

    vue中,我们所要实现的一个场景就是: 1.搜索页面==>到搜索结果页时,搜索结果页面要重新获取数据, 2.搜索结果页面==>点击进入详情页==>从详情页返回列表页时,要保存上次已经加载的数据和自动还原上次的浏览位置. 最近在项目中遇到这个问题,思考了几套方案,总是不太完善.百度搜到的方案也基本都只能满足一些很简单的需求.对于复杂一些的情况,还是有些不完善的地方.以下是个人对于这种场景的一个摸索,也参考了百度.如有更好的方案,欢迎指出. 缓存组件,vue2中提供了keep-alive.首

  • vue中watch和computed为什么能监听到数据的改变以及不同之处

    先来个流程图,水平有限,凑活看吧-_-|| 首先在创建一个Vue应用时: var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) Vue构造函数源码: //创建Vue构造函数 function Vue (options) { if (!(this instanceof Vue) ) { warn('Vue is a constructor and should be called with the `new` keyw

随机推荐