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 相关文章推荐
一段非常简单的让图片自动切换js代码
Nov 10 Javascript
JavaScript加密解密7种方法总结分析
Oct 07 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
Apr 07 Javascript
基于JavaScript 声明全局变量的三种方式详解
May 07 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
Aug 01 Javascript
禁用JavaScript控制台调试的方法
Mar 07 Javascript
jquery实现横向图片轮播特效代码分享
Nov 19 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
Mar 21 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
微信小程序多张图片上传功能
Jun 07 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
vue仿ios列表左划删除
Sep 26 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.MVC的模板标签系统(五)
2006/09/05 PHP
php中文本操作的类
2007/03/17 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
javascript 面向对象编程基础:封装
2009/08/21 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
pandas的object对象转时间对象的方法
2018/04/11 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
python urllib和urllib3知识点总结
2021/02/08 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
银行职员自我鉴定
2014/04/20 职场文书
服务承诺书范文
2014/05/19 职场文书
英文演讲稿开场白
2014/08/25 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
高中家长意见怎么写
2015/06/03 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫