Vue 之qs 使用详解

Vue 之 qs 使用

1. qs插件简介

  • 最近接触了一个Vue + elementui 的项目,请求数据使用axios发送请求发现后端接收不到参数,后来知道了要把参数序列化
    Vue中提供了qs这个插件。进行数据序列化。

2. qs 的基本使用

2.1 qs 安装

npm install qs / cnpm install qs (安装了淘宝镜像的才可以使用)

2.2 qs 全局引入

//在main.js引入qs
import  qs from 'qs'

//配全局属性配置,在任意组件内可以使用this.$qs获取qs对象

 Vue.prototype.$qs = qs

2.3 使用qs

methods: {
            //获取部门列表
            getDepartments() {
                this.listLoading = true;
                let para = this.$refs.queryName.value;
                let obj={name:para};
             //qs.parse()是将URL解析成对象的形式
              let query = this.$qs.parse(obj);
                this.$http.patch("/department/queryByName",query).then((res) => {
                    // this.total = res.data.total;
                    this.departments = res.data;
                    this.listLoading = false;
                    //NProgress.done();
                });
            },

**前端参数格式:

2.4 后端接受参数使用springmvc的@RequestBody接收

  @RequestMapping(value = "/queryByName",method = RequestMethod.PATCH)
    @ResponseBody
    public  List<Department> queryByName(@RequestBody DepartmentQuery  dep){
       System.out.println("接受参数为:"+dep);
        List<Department> departmentList = departmentService.queryByName(dep);
        return  departmentList;
    }

后端接收参数格式(注意使用@RequestBody 接收对象属性要与前端传第json对象的key相同命名哦


3. qs的qs.parse()和qs.stringify()

3.1 qs.parse()

qs.parse()是将URL解析成对象的形式
我遇到的问题就是使用此方法解决的。因为后端@RequestBody注解对应的类在将HTTP的输入流(含请求体)装配到目标类(即:@RequestBody后面的类)时,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合(或可转换为)


3.2 qs.stringify()

qs.stringify()将对象 序列化成URL的形式以&进行拼接
代码示例:

const Qs = require('qs');
let obj= {
 method: "query_sql_dataset_data",
 projectId: "85",
 appToken: "7d22e38e-5717-11e7-907b-a6006ad3dba0",
 datasetId: " 12564701"
  };
Qs.stringify(obj);
console.log(Qs.stringify(obj));

如上面代码所示,输出结果如下


4.JSON中stringify方法和qs中stringify的区别

{"uid":"cs11","pwd":"000000als","username":"cs11","password":"000000als"}
uid=cs11&pwd=000000als&username=cs11&password=000000als

如上所示,前者是采用JSON.stringify(param)进行处理,后者是采用Qs.stringify(param)进行处理的。

原文地址:https://www.cnblogs.com/qdmpky/p/12008654.html

时间: 2024-08-30 18:29:22

Vue 之qs 使用详解的相关文章

vue实例生命周期详解

每个 Vue 实例在被创建之前都要经过一系列的初始化过程. 例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 DOM . 在这个过程中,实例也会调用一些 生命周期钩子 ,这就给我们提供了执行自定义逻辑的机会.例如,created 这个钩子在实例被创建之后被调用 var vm = new Vue({ data: { a: 1 }, created: function () { // `this` 指向 vm 实例 console.log

Vue双向绑定原理详解

前言:Vue最核心的功能之一就是响应式的数据绑定模式,即view与model任意一方改变都会同步到另一方,而不需要手动进行DOM操作,本文主要探究此功能背后的原理. 思路分析 以下是一个最简单的双向绑定的例子: <body> <div id="app"> <input type="text" v-model="msg"> <p>{{msg}}</p> </div> </

实例化vue发生了什么(详解vue生命周期)

const app = new Vue({ el:"#app', data:{ message:'hello,lifePeriod' }, methods:{ init(){ console.log('这是一个方法!') } } }) 触发 beforeCreate 钩子函数 组件实例刚被创建,此时无法访问到 el 属性和 data 属性等.. beforeCreate(){ console.log(`元素:${this.$el}`) //undefined console.log(`属性mes

vue内置指令详解——小白速会

指令 (Directives) 是带有 v- 前缀的特殊属性,职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM. 内置指令 1.v-bind:响应并更新DOM特性:例如:v-bind:href  v-bind:class  v-bind:title  等等 主要用法是绑定属性,动态更新HTML元素上的属性: <a v-bind:href="url">...</a> <!-- 缩写 --> <a :href="ur

Windows系统下Vue开发环境搭建详解版

?记在前面 之前学js也踩过很多坑,第一次用博客记录这些过程,一方面自己以后能够回顾,另一方面也希望能帮助跟我自己一样遇到同样问题的朋友 ps:不会的就去搜,去问,千万不要觉着遇到难点了,暂时走不下去了,就放弃!!!大家一起学习进步~~~ 在慕课网上跟着这个视频学习搭建的:https://www.imooc.com/video/12299 一.首先是windows系统,需要安装node.js和git 1.node.js:https://nodejs.org/zh-cn/    下载哪一个都可以(

vue项目目录结构详解

项目简介基于 vue.js 的前端开发环境,用于前后端分离后的单页应用开发,可以在开发时使用 ES Next.scss 等最新语言特性.项目包含: 基础库: vue.js.vue-router.vuex.whatwg-fetch 编译/打包工具:webpack.babel.node-sass 单元测试工具:karma.mocha.sinon-chai 本地服务器:express 目录结构 ├── README.md            项目介绍 ├── index.html          

vue组件生命周期详解

Vue实例有一个完整的生命周期,也就是说从开始创建.初始化数据.编译模板.挂在DOM.渲染-更新-渲染.卸载等一系列过程,我们成为Vue 实例的生命周期,钩子就是在某个阶段给你一个做某些处理的机会.Vue是一个自带组件系统的前端框架.Vue的每一个实例其实就是一个组件,我们在组织我们的页面结构的时候其实就是在定一个一个组件,然后拼装在一起,完成一个复杂的页面逻辑.组件主要包含:数据,模版,以及链接数据和模版的状态响应系统. beforeCreate( 创建前 ) 在实例初始化之后,数据观测和事件

[转]Vue中Vuex的详解与使用(简洁易懂的入门小实例)

怎么安装 Vuex 我就不介绍了,官网上有 就是 npm install xxx 之类的.(其实就是懒~~~哈哈) 那么现在就开始正文部分了 众所周知 Vuex 是什么呢?是用来干嘛的呢? Vuex 是一个专为 Vue.js 应用程序开发的`状态管理模式`.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 例如:你有几个数据,几个操作,在多个组件上都需要使用,如果每个组件都去调用都是写,就会很麻烦,代码又臭又长.当然 如果没有大量的操作和数据需要在多个

Vue的条件渲染详解

Vue的条件渲染 v-if.v-else.v-else-if以及v-show的用法 v-if的渲染方式: 会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建: 只有当条件第一次变为真时,才会开始渲染条件块: 切换开销比v-show高: v-show的渲染方式: 不管初始条件是什么,元素总是会被渲染: 只是简单地基于 CSS 进行切换: v-show的初始渲染开销比v-if高: 如果需要频繁的切换,则使用v-show: 如果运行时条件很少改变,则用v-if: <!DOCTYPE ht