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}
varparam={id:1,name:'zhangsan'}
this.$axios.delete("/ehrReferralObjPro",{data:param}).then(function(response){
}
如果服务端将参数当做url参数接收,则格式为:{params:param},这样发送的url将变为http:www.XXX.com?a=…&b=…
varparam={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请求插件
constaxios=require('axios');
/**
*以下这种方式需要调用Vue.use方法调用的时候调用this.$fetch,this.$post,this.$axios,this.$put,this.$del方法
*/
functioncoverFormData(data){
returnObject.keys(data).map(key=>{
letvalue=data[key];
if(typeofvalue==='object'){
value=JSON.stringify(value);
}
returnencodeURIComponent(key)+'='+encodeURIComponent(value);
})
}
consthttp={
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&&typeofOption.headers==='object'){
for(letkeyinOption.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={}参数可以根据需要自行处理
*/
constfetch=(url,params={},config={})=>{
conststr=coverFormData(params).join('&');
returnnewPromise((resolve,reject)=>{
letaddress=url;
if(str){
address+='?'+str;
}
axios.get(address,config).then(res=>{
resolve(res.data);
}).catch(error=>{
reject(error);
});
});
};
/**
*@param{string}url
*@param{object}data={}参数可以根据需要自行处理
*/
constpost=(url,data={},config={})=>{
letstr=coverFormData(data).join('&');
if(config.headers&&config.headers['Content-Type']&&config.headers['Content-Type'].indexOf('application/json')>-1){
str=JSON.parse(JSON.stringify(data));
}
returnnewPromise((resolve,reject)=>{
axios.post(url,str,config).then(res=>{
resolve(res.data);
}).catch(error=>{
reject(error);
});
});
};
/**
*@param{string}url
*@param{object}data={}参数可以根据需要自行处理
*/
constput=(url,data={},config={})=>{
conststr=coverFormData(data).join('&');
returnnewPromise((resolve,reject)=>{
axios.put(url,str,config).then(res=>{
resolve(res.data);
}).catch(error=>{
reject(error);
});
});
};
/**
*@param{string}url
*@param{object}params={}
*/
constdel=(url,config={})=>{
conststr=coverFormData(config).join('&');
returnnewPromise((resolve,reject)=>{
axios.delete(url,str).then(res=>{
resolve(res.data);
}).catch(error=>{
reject(error);
});
});
};
constdata={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]}));
}
};
exportdefaulthttp;
然后在main.js中导入包使用:
importhttpfrom'./assets/js/http';
Vue.use(http,{
timeout:60000,
inRequest(config){
config.headers['Authorization']=
sessionStorage.getItem('TokenType')+""
+sessionStorage.getItem('AccessToken');
returnconfig;
},
inResponse(response){
returnresponse;
}
});
之后在子组件中就可以直接使用this.$post等了
比如:
this.$post("你的url",{
CityId:cityid,
Type:3
})
.then(res=>{
if(res.Success){
this.searchSecondary=res.Data;
}
})
.catch(error=>{
console.log(error);
});
以上这篇Vue中axiosdelete请求参数操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
