Vue中 axios delete请求参数操作


Posted in Javascript onAugust 25, 2020

vue中axios 的delete和post,put在传值上有点区别

post和put有三个参数,url,data和config,所以在使用这两个时,可以写成axios.post(api,{id:1}),axios.put(api,{id:1}),但是delete只有两个参数:url和config,data在config中,所以需要写成 axios.delete(api,{data:{id:1}})

如果是服务端将参数当作Java对象来封装接收则 参数格式为:

{data: param}

var param={id:1,name:'zhangsan'}
this.$axios.delete("/ehrReferralObjPro", {data: param}).then(function(response) {
 }

如果服务端将参数当做url 参数 接收,则格式为:{params: param},这样发送的url将变为http:www.XXX.com?a=…&b=…

var param={id:1,name:'zhangsan'}
this.$axios.delete("/ehrReferralObjPro", {params: param}).then(function(response) {
 }

axios 数组传值时,我传到后台的是两个字符串数组,但是将参数当成url参数接收时,如果是正常传值,将数组作为一个请求参数传值时,后台接口接收不到匹配的参数,百度之后使用JSON.stringify(),但是使用以后,后台多了一对双引号,最后把后台改成对象封装接收参数,使用的第一种。

补充知识:vue 项目中的this.$get,this.$post等$的用法

vue官网上有这么一句话

Vue中 axios delete请求参数操作

结合案例:

// 基于axios 封装的http请求插件
const axios = require('axios');
 
/**
 * 以下这种方式需要调用Vue.use方法 调用的时候调用 this.$fetch, this.$post, this.$axios, this.$put, this.$del 方法
 */
function coverFormData (data) {
 return Object.keys(data).map(key => {
  let value = data[key];
  if (typeof value === 'object') {
   value = JSON.stringify(value);
  }
  return encodeURIComponent(key) + '=' + encodeURIComponent(value);
 })
}
const http = {
 install(Vue, Option) {
  axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
  if (Option) {
   // 超时设置
   axios.defaults.timeout = Option.timeout || 10000;
   // 默认请求地址设置
   axios.defaults.baseURL = Option.baseURL || "";
   // 头部设置
   if (Option.headers && typeof Option.headers === 'object') {
    for (let key in Option.headers) {
     if (!Option.headers.hasOwnProperty(key)) continue;
     axios.defaults.headers[key] = Option.headers[key];
    }
   }
   // 请求/响应拦截器
   Option.inRequest && axios.interceptors.request.use(Option.inRequest, error => {
     Promise.reject(error);
   });
   Option.inResponse && axios.interceptors.response.use(Option.inResponse, error => {
     Promise.reject(error);
   });
  }
  /**
   * @param {string} url
   * @param {object} params={} 参数可以根据需要自行处理
   */
  const fetch = (url, params = {}, config = {}) => {
   const str = coverFormData(params).join('&');
   return new Promise((resolve, reject) => {
    let address = url;
    if (str) {
     address += '?' + str;
    }
    axios.get(address, config).then(res => {
     resolve(res.data);
    }).catch(error => {
     reject(error);
    });
   });
  };
 
  /**
   * @param {string} url
   * @param {object} data={} 参数可以根据需要自行处理
  
   */
  const post = (url, data = {}, config = {}) => {
   let str = coverFormData(data).join('&');
   if (config.headers && config.headers['Content-Type'] && config.headers['Content-Type'].indexOf('application/json') > -1) {
    str = JSON.parse(JSON.stringify(data));
   }
   return new Promise((resolve, reject) => {
    axios.post(url, str, config).then(res => {
     resolve(res.data);
    }).catch(error => {
     reject(error);
    });
   });
  };
 
  /**
   * @param {string} url
   * @param {object} data={} 参数可以根据需要自行处理
   */
  const put = (url, data = {}, config = {}) => {
   const str = coverFormData(data).join('&');
   return new Promise((resolve, reject) => {
    axios.put(url, str, config).then(res => {
     resolve(res.data);
    }).catch(error => {
     reject(error);
    });
   });
  };
 
  /**
   * @param {string} url
   * @param {object} params={}
   */
 
  const del = (url, config = {}) => {
   const str = coverFormData(config).join('&');
   return new Promise((resolve, reject) => {
    axios.delete(url, str).then(res => {
     resolve(res.data);
    }).catch(error => {
     reject(error);
    });
   });
  };
  const data = { axios, fetch, post, put, del };
  // 这个地方说明了为啥使用的时候是this.$fetch, this.$post, this.$axios, this.$put, this.$del 这几个方式
  Object.keys(data).map(item => Object.defineProperty(Vue.prototype, '$' + item, { value: data[item] }));
 }
};
 
export default http;

然后在main.js中导入包使用:

Vue中 axios delete请求参数操作

import http from './assets/js/http';
 
Vue.use(http, {
  timeout: 60000,
  inRequest (config) {
    config.headers['Authorization'] =
      sessionStorage.getItem('TokenType') +" "
      + sessionStorage.getItem('AccessToken');
    return config;
  }, 
  inResponse (response) {
    return response;
  }
});

之后在子组件中就可以直接使用this.$post等了

比如:

this.$post("你的url", {
    CityId: cityid,
    Type: 3
   })
    .then(res => {
     if (res.Success) {
      this.searchSecondary = res.Data;
     }
    })
    .catch(error => {
     console.log(error);
    });

以上这篇Vue中 axios delete请求参数操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery DOM操作小结与实例
Jan 07 Javascript
jquery引用方法时传递参数原理分析
Oct 13 Javascript
微信小程序 富文本转文本实例详解
Oct 24 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
基于JS实现的随机数字抽签实例
Dec 08 Javascript
过期软件破解办法实例详解
Jan 04 Javascript
js 判断数据类型的几种方法
Jan 13 Javascript
jQuery倒计时代码(超简单)
Feb 27 Javascript
vue中如何实现变量和字符串拼接
Jun 19 Javascript
vue上传图片组件编写代码
Jul 26 Javascript
vue实现登录后页面跳转到之前页面
Jan 07 Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 18 Javascript
React实现轮播效果
Aug 25 #Javascript
React实现全选功能
Aug 25 #Javascript
react实现复选框全选和反选组件效果
Aug 25 #Javascript
js实现数字跳动到指定数字
Aug 25 #Javascript
js实现点击选项置顶动画效果
Aug 25 #Javascript
理解JavaScript中的对象
Aug 25 #Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
Aug 25 #Javascript
You might like
php桌面中心(一) 创建数据库
2007/03/11 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
Symfony控制层深入详解
2016/03/17 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
canvas的神奇用法
2017/02/03 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
跟老齐学Python之dict()的操作方法
2014/09/24 Python
Python 加密的实例详解
2017/10/09 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
java关于string最常出现的面试题整理
2021/01/18 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
2014年自我评价
2014/01/04 职场文书
保安队长职务说明书
2014/02/23 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书