Vue中 axios delete请求参数操作
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官网上有这么一句话
结合案例:
// 基于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中导入包使用:
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请求参数操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
vue中使用 pako.js 解密 gzip加密字符串的方法
这篇文章主要介绍了vue项目中 使用 pako.js 解密 gzip加密字符串 的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-06-06vue3的setup语法如何自定义v-model为公用hooks
这篇文章主要介绍了vue3的setup语法如何自定义v-model为公用hooks,文章分为两个部分介绍,简单介绍vue3的setup语法如何自定义v-model和如何提取v-model语法作为一个公用hooks2022-07-07vue-seamless-scroll无缝滚动组件使用方法详解
这篇文章主要为大家详细介绍了vue-seamless-scroll无缝滚动组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-04-04vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
这篇文章主要介绍了vue搜索页开发实例(热门搜索,历史搜索,淘宝接口演示),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-04-04
最新评论