分享下我自己的axios封装
axios是个很好用的插件,都是一些params对象,所以很方便做一些统一处理
当然首先是npm安装axios 很简单$ npm install axios --save
在src下新建文件夹 service / index.js
接着上代码
import axios from 'axios'; import { Toast} from 'mint-ui';// 我用的mint的框架来弹出我的错误返回 大家可以用别的提示 import router from '../router' // 默认超时设置 axios.defaults.timeout = 50000; // 相对路径设置 axios.defaults.baseURL =''; //http request 拦截器 axios.interceptors.request.use( config => { // 获取token const token = localStorage.getItem('cc_token'); // 设置参数格式 if(!config.headers['Content-Type']){ config.headers = { 'Content-Type':'application/json', }; } // 添加token到headers if(token){ config.headers.token = token } // 鉴权参数设置 if(config.method === 'get'){ //get请求下 参数在params中,其他请求在data中 config.params = config.params || {}; let json = JSON.parse(JSON.stringify(config.params)); //一些参数处理 }else{ config.data = config.data || {}; //一些参数处理 } return config; }, err => { return Promise.reject(err); } );
以上请求之前的一些处理就完成了
下面是获得返回的一些处理
//http response 拦截器 axios.interceptors.response.use( response => { //一些统一code的返回处理 if(response.data.code === 501){ // 登录验证 //做了个示例跳转项目中登录,并记录下相对路径 router.push({ name:'login',//从哪个页面跳转 query:{ retUrl:window.location.href.split('#')[1] || '', is_new_user_url:1 } }) } return response; }, error => { return Promise.reject(error) } );
接着把所有请求类型都做下简单封装
/** * 封装get方法 * @param url * @param params * @returns {Promise} */ export function fetch(url,params={}){ return new Promise((resolve,reject) => { axios.get(url,{ params:params }) .then(response => { if(response.data.code === 200){ //返回成功处理 这里传的啥 后续调用的时候 res就是啥 resolve(response.data.data);//我们后台所有数据都是放在返回的data里所以这里统一处理了 }else{ //错误处理 Toast(response.data.msg) } }) .catch(err => { reject(err); let message = '请求失败!请检查网络'; //错误返回 if(err.response)message=err.response.data.message; Toast(message) }) }) } /** * 封装post请求 * @param url * @param data * @returns {Promise} */ export function post(url,data = {}){ return new Promise((resolve,reject) => { axios.post(url,data) .then(response => { if(response.data.code === 200){ resolve(response.data.data); }else{ Toast(response.data.msg) } },err => { reject(err); let message = '请求失败!请检查网络'; if(err.response)message=err.response.data.message; Toast(message) }) }) } /** * 封装patch请求 * @param url * @param data * @returns {Promise} */ export function patch(url,data = {}){ return new Promise((resolve,reject) => { axios.patch(url,data) .then(response => { if(response.data.code === 200){ resolve(response.data.data); }else{ Toast(response.data.msg) } },err => { reject(err); let message = '请求失败!请检查网络'; if(err.response)message=err.response.data.message; Toast(message) }) }) } /** * 封装put请求 * @param url * @param data * @returns {Promise} */ export function put(url,data = {}){ return new Promise((resolve,reject) => { axios.put(url,data) .then(response => { if(response.data.code === 200){ resolve(response.data.data); }else{ Toast(response.data.msg) } },err => { reject(err); let message = '请求失败!请检查网络'; if(err.response)message=err.response.data.message; Toast(message) }) }) } export function del(url,data = {}){ return new Promise((resolve,reject) => { axios.delete(url,data) .then(response => { if(response.data.code === 200){ resolve(response.data.data); }else{ Toast(response.data.msg) } },err => { reject(err); let message = '请求失败!请检查网络'; if(err.response)message=err.response.data.message; Toast(message) }) }) }
好了 主要的文件编辑好 然后在service中新建api.js文件并引入对应组件方法
import Vue from 'vue'; import {post,fetch,patch,put,del,upload,ret2} from './index' Vue.prototype.$post=post; Vue.prototype.$fetch=fetch; Vue.prototype.$patch=patch; Vue.prototype.$put=put; Vue.prototype.$del=del;
接着就可以开始写各个API方法了
//也可以不需要 const _baseUrl=process.env.API_URL;//这里我在项目配置文件里面设置了相对路径 //登录方法 const loginURL = `${_baseUrl}api/admin/login`; export const loginApi = function(json) { return Vue.prototype.$post(loginURL,{"username":json.username,"passwd":json.password}) }; //修改账号信息RESTful const editAdminUrl = `${_baseUrl}api/admin/user/info`; export const editAdminListApi = function (id,json) { return Vue.prototype.$put(`${editAdminUrl}/${id}`,json) }; //等等...
最后是使用,非常简单方便,在vue文件中引入并使用
import { loginApi ,editAdminListApi } from "../../service/api"; export default { methods:{ //登录 login(){ let json = { userName:'xx', password:'xx' } loginApi().then(res=>{ console.log(res) }) }, // RESTful 修改信息 editAdminList(){ let id = 1; let json = {name:11}; editAdminListApi(id,json).then(res=>{ console.log(res) }) } } }
使用方便简洁。
以上所述是小编给大家介绍的vue中axios的使用与封装详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍vue中Axios的封装与API接口的管理详解,包括了vue中Axios的封装与API接口的管理详解的使用技巧和注意事项,需要的朋友参考一下 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题,我们所要的说的axios的封装和api接口的统一管理,其实主要目的就是在帮助我们简化代码和利于后期的更新维护。 一、axios的封装 在vue项目中,和后台交互获
本文向大家介绍Vue二次封装axios为插件使用详解,包括了Vue二次封装axios为插件使用详解的使用技巧和注意事项,需要的朋友参考一下 照例先贴上 axios 的 gitHub 地址 不管用什么方式获取数据,对于一个项目来说,代码一定要利于维护其次是一定要写的优美,因此加上一层封装是必要的 vuejs2.0 已经不再维护 vue-resource,vuejs2.0 已经使用了 axios,这也
本文向大家介绍详解Vue中Axios封装API接口的思路及方法,包括了详解Vue中Axios封装API接口的思路及方法的使用技巧和注意事项,需要的朋友参考一下 一、axios的封装 在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御X
本文向大家介绍vue中axios的二次封装实例讲解,包括了vue中axios的二次封装实例讲解的使用技巧和注意事项,需要的朋友参考一下 我们做项目时,虽然axios也可以直接拿来用,但是对接口比较零散,不太好进行维护,也会产生大量的重复代码,所以我在这对axios进行了统一接口处理 第一步,先在src中的公共文件夹中如utils里新建request.js文件 代码解读: 将接口统一放到单独的文
本文向大家介绍android 中 SQLiteOpenHelper的封装使用详解,包括了android 中 SQLiteOpenHelper的封装使用详解的使用技巧和注意事项,需要的朋友参考一下 在android中常用存储数据的基本就三种,sqlite,SharedPreferences,文件存储,其中针对于对象存储,使用sqlite比较多,因为可以对其进行增删改查。本文主要讲解SQLiteOpe
本文向大家介绍vue 里面使用axios 和封装的示例代码,包括了vue 里面使用axios 和封装的示例代码的使用技巧和注意事项,需要的朋友参考一下 vue官方推荐使用 axios发送请求 首先上需求 1.需要封装全局调用 2.返回一个promise对象 3.错误全局统一处理 4.除了登录界面token带入头部 5.登录时候把用户信息自动存到vuex里面 首先上封装代码 调用方式 接收2个参数