封装一下axios!

先去官方文档康康----》起步 | Axios 中文文档 | Axios 中文网

Axios 是什么?

Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。

特性

  • 从浏览器创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防御XSRF

第一步:

肯定是先安装系不系咯!

npm(其他的懒得写)

npm install axios

任君挑选:

第二步:引入

1.新建一个文件夹request里面有两个文件,api.js(介个里面要放的是统一管理的接口)、http.js(介个那肯定是封装axios的地方啵)

在http.js文件夹里面: 

认真看看代码别直接cv大法!!!

//引入
import axios from 'axios';
//这里引入element-ui里面的消息提示组件
import { Message } from 'element-ui';

import 'element-ui/lib/theme-chalk/index.css';

// console.log(process.env.NODE_ENV);
// console.log(process.env.VUE_APP_BaseURL);

const service = axios.create({
	baseURL: process.env.VUE_APP_BaseURL,//基准地址
	timeout: 6000    //设置请求超时
});

// axios
// axios.get  axios.post
// axios({})


//添加请求拦截器,不懂看官方文档
service.interceptors.request.use(
	(config) => {
		// console.log(config);
		if (localStorage.getItem('token')) {
			config.headers['Authorization'] = localStorage.getItem('token');
		}

		return config;
	},
	(error) => {
		// 对请求错误做些什么
		return Promise.reject(error);
	}
);
//添加响应拦截器
service.interceptors.response.use(
	(response) => {
		// console.log(response);
		return response;
	},
	(error) => {
		console.log(typeof error); //timeout of 6000ms exceeded
		// return Promise.reject(error);
		if (error.response.status) {
			switch (error.response.status) {
				// 401: 未登录
				// 未登录则跳转登录页面,并携带当前页面的路径
				// 在登录成功后返回当前页面,这一步需要在登录页操作。
				case 401:
					Message({
						showClose: true,
						message: '未授权',
						type: 'error',
						duration: 3000
					});
					break;

				// 403 token过期
				// 登录过期对用户进行提示
				// 清除本地token和清空vuex中token对象
				// 跳转登录页面
				case 403:
					// console.log("403")
					Message({
						showClose: true,
						message: '被禁止访问',
						type: 'error',
						duration: 3000
					});

					break;

				// 404请求不存在
				case 404:
					Message({
						showClose: true,
						message: '请求的资源不存在',
						type: 'error',
						duration: 3000
					});

					break;
				// 其他错误,直接抛出错误提示
				default:
					Message({
						showClose: true,
						message: '其他的错误',
						type: 'error',
						duration: 3000
					});
			}
			return Promise.reject(error.response);
		}
	}
);

// 封装get请求
export function get(url, data = {}) {
	return service.get(url, { params: data });
}

//封装post请求
export function post(url, params = {}) {
	return service.post(url, params);
}
//封装put请求
export function put(url, params = {}) {
	return service.put(url, params);
}
//封装delete请求
export function deletefn(url, params = {}) {
	return service.delete(url, params);
}

export default service;

 api.js:

import request from './http.js';

const MainApi = {
	// MainBanner:function(p){
	// 	return  request.post('/nav',p)
	// },
	// MainProduct:function(p){
	// 		return request.get("/product/getHomeProducts",p)
	// }

	Login: function (p) {
		return request({
			url: '/login',
			method: 'post',
			data: p
		});
	},
	getMenu: function () {
		return request({
			url: '/menus',
			method: 'get'
		});
	},
}

export default MainApi;

如何在组件里面调用

打个样其他的全部靠悟性!

 MainApi.Login(this.ruleForm).then((res) => {
console.log(res);
}

如果有任何错误不足和不懂的,请大家评论留言多多关照!!!

还是看不懂,可以看看这个vue中Axios的封装和API接口的管理 - 掘金

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值