好买网IT技术交易平台在一个项目中,我们经常需要调用很多接口。我们不可能每次调用接口都写一个完整的调用,所以需要封装/***********axios.js**************///封装axiosimportaxiosfrom"axios";importqsfrom"qs";//初始化axios,设置默认baseURLconsthttp=axios.create({baseURL:"http://localhost:3000",timeout:1000*180,});//添加一个请求拦截器http.interceptors.request.use((config)=>{//再次发送请求try之前做什么//token验证//每次发送一个request,需要尝试携带token。//登录前获取不到token,需要使用trycatchconfig.headers["authorization"]=JSON.parse(sessionStorage.getItem("user")).token;}catch(error){console.log(error);}returnconfig;},(error)=>{//处理错误请求returnPromise.reject(error);});//添加响应拦截器(处理响应数据)http.interceptors.response.use((response)=>{//对响应数据做一些事情if(response.status==200){返回响应.data;}否则{返回n{code:201,msg:"请求失败!"};}},(error)=>{//对错误响应做一些什么returnPromise.reject(error);});constget=function(api,object){if(object===null)object={};return(promise=http.get(api,{params:object,}));};constpost=function(api,object){if(object===null)object={};return(promise=http.post(api,qs.stringify(object)));};constuploadFile=function(api,object){if(object===null)object={}让参数=newFormData()for(letkeyinobject){param.append(key,object[key])}letconfig={headers:{"Content-Type":"multipart/form-data"}}返回promise=http.post(api,param,config)}export{get,post,uploadFile}/************api.js***************/import{get,post}from"./axios.js"constlogin=(obj)=>post("/login",obj)consthomepage=(obj)=>get("/home",obj)exportapi={reqLogin:login,要求e:homepage}//只需要将api挂载到Vue的原型链或者React的原型链上就可以使用了/**********Vue******************/从“./net/api.js”导入apiVue.prototype.$http=api/************React*************/importapifrom"./net/api.js"React.Component.prototype.$http=api关于Content-Type:常见的媒体格式类型如下:text/htmlHTMlformattext/plain这种格式是纯文本/xmlXML格式image/gifgif图像格式image/jpegjpg图像格式image/pngpng图像格式mediaformattypeapplication/xhtml+xmlXHTML格式application/xmlXML数据格式application/atom+xmlAtomXML聚合格式application/jsonJSON数据格式application/pdfpdf格式application/mswordWord文档格式application/octet-stream二进制流数据(比如普通文件下载)application/x-www-form-urlencoded
