vue - axios简单封装
分析:
(1)axios处理接口请求。可能需处理请求拦截,响应拦截,不同类型的请求,所以需要一个http.js文件
(2)请求都是基于相关环境的,所以需要一个url.js处理环境
(3)可根据不同模块将同一个模块的请求放在一起,所以可将test模块的请求放在test.js中
(4)新建一个文件,将不同模块的请求都集合在一起,所以需要一个api.js
(5)使用
目录:

main.js 将所有api挂载在vue原型上
import api from './api/api.js' Vue.prototype.$api = api;
url.js
/*
* @Author: lingxie
* @Date: 2020-06-29 11:37:09
* @Descripttion:
*/
let baseUrl;
if(process.env.NODE_ENV == 'development'){
baseUrl = '/api' //此处使用了代理,请看vue.config.js
}else if(process.en .NODE_ENV == 'test'){
baseUrl = 'https://www.test.com'
}else if(process.en .NODE_ENV == 'production'){
baseUrl = 'https://www.prod.com'
}
export default baseUrl
http.js
/*
* @Author: lingxie
* @Date: 2020-06-29 09:36:50
* @Descripttion:
*/
import axios from 'axios';
import qs from 'qs';
import baseurl from './url';
console.log(baseurl);
// 创建axios实例
// const instance = axios.create({
// baseURL:this.$utils.baseURL,
// timeout:2000
// });
const instance = axios.create();
instance.defaults.baseURL = baseurl;
instance.defaults.timeout = 2000;
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
// config.headers['token'] = '1111111111111111'
if(config.method === 'post'){
// config.data = qs.stringify(config.data);
// config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
// config.headers['token'] = '222222222222'
}
return config; }, function (err) {
// 对请求错误做些什么
return Promise.reject(err);
}); // 添加响应拦截器
instance.interceptors.response.use(function (res) {
// 对响应数据做点什么
return res;
}, function (err) {
// 对响应错误做点什么
return Promise.reject(err);
}); function get(url,params){
return new Promise((resolve,reject)=>{
instance.get(url,{
params:params
}).then(res =>{
resolve(res.data);
}).catch(err=>{
reject(err)
});
});
}; // 适合于Content-Type'为'application/x-www-form-urlencoded post请求
// 客户端把form数据转换成一个字串append到url后面,用?分割。
function post(url,params,){
console.log(qs.stringify(params));// 形如type=top&key=136f240edd201502102577573e95f208
const header ={
headers:{
'Content-Type':'application/x-www-form-urlencoded',
'token':'333333333333333333'
}
}
return new Promise((resolve,reject)=>{
instance.post(url,qs.stringify(params),header).then(res =>{
resolve(res.data);
}).catch(err=>{
reject(err)
});
});
}; // 适合于Content-Type'为'multipart/form-data post请求
function post1(url,params,){
console.log(qs.stringify(params));// 形如type=top&key=136f240edd201502102577573e95f208
const header ={
headers:{
'Content-Type':'multipart/form-data; charset=utf-8;',
'token':'4444444'
}
}
return new Promise((resolve,reject)=>{
instance.post1(url,qs.stringify(params),header).then(res =>{
resolve(res.data);
}).catch(err=>{
reject(err)
});
});
}; export {
get,
post,
post1
};
test.js
/*
* @Author: lingxie
* @Date: 2020-06-29 10:43:02
* @Descripttion:
*/
import {get,post,post1} from './http'; const toutiao =params => post('/toutiao/index',params);//新闻头条
const joke =params =>get('/joke/content/list.php',params);//笑话 const test ={
toutiao,
joke
}
export default test
api.js
import test from './test' //引入test模块的api
const api = {
test
}
export default api;
vue.config.js代理配置
/*
* @Author: lingxie
* @Date: 2020-04-23 13:38:18
* @Descripttion:
*/
module.exports = { devServer: {
proxy: {
// 匹配所有以api开头的请求路径
'/api': {
target: 'http://v.juhe.cn/',
changeOrigin: true, // 把api替换掉
pathRewrite: {
'^/api': ''
}
}
}
}, }
使用:
<!--
* @Author: lingxie
* @Date: 2020-04-23 13:35:57
* @Descripttion:
-->
<template>
<div class="about"> </div>
</template>
<script>
export default { created(){
this.fetch_toutiao();
this.fetch_joke();
},
methods:{
fetch_toutiao(){
let jsonData ={
type:'top',
key:'136f240edd201502102577573e95f208'
}
this.$api.test.toutiao(jsonData).then(res=>{
console.log(res);
});
}, fetch_joke(){
console.log('1111', this.$api);
let jsonData ={
sort:'asc',
time:'1418816972',
key:'14ec2ba9cfdfa38a712ae8c5e80a728c'
}
this.$api.test.joke(jsonData).then(res=>{
console.log(res);
});
} }
}
</script>
vue - axios简单封装的更多相关文章
- vue axios 简单封装以及思考
先安装 axios npm install axios axios的详细介绍以及用法 就不多说了请 移步 github ➡️ https://github.com/axios/axios 下面是简单 ...
- vue axios接口封装、Promise封装、简单的axios方法封装、vue接口方法封装、vue post、get、patch、put方法封装
相信大家在做前后端数据交互的时候都会给请求做一些简单的封装就像之前封装ajax方法一样axios的封装也是一样的简单下面这个就是封装的axios的方法,require.js import axios ...
- axios简单封装
写在最前面 新手前端刚刚接触vue,感觉真的好用.项目中需要使用axios,然后学习了一下.借鉴网上一些大佬的经验,现在分享一下axios的简单封装,如果有什么错误的地方,请大家指出. axios安装 ...
- Vue.js(18)之 axios简单封装
基于vue-cli2.x封装axios src目录 axios.js import axios from 'axios' import { Indicator, Toast } from 'mint- ...
- Vue: axios 请求封装及设置默认域名前缀 (for Vue 2.0)
1. 实现效果 以get方法向http://192.168.32.12:8080/users 发起请求.获取数据并进行处理 this.apiGet('/users', {}) .then((res) ...
- VUE axios请求 封装 get post Http
创建httpService.js 文件 import axios from 'axios'; import { Loading , Message } from 'element-ui'; impor ...
- Vue Axios 的封装使用
目录 Axios 说明 安装 Axios 请求配置 响应结构 常用请求方法 默认值配置 全局的 请求配置项 自定义实例默认值 配置的优先顺序 拦截器 个人完整 axios 配置 Axios 说明 Ax ...
- vue axios简单配置
参考:https://www.cnblogs.com/sophie_wang/p/7844119.html 1. 安装 npm install axios 2. main.js import axio ...
- 用XHR简单封装一个axios
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue中axios的封装以及简单使用
一.axios的封装 在vue中为了使用axios使用方便,不需要每一个模块进行导入,就需要对其进行封装: 1.新建http.js模块 import axios from 'axios' // 设置基 ...
随机推荐
- js通过hook拿fetch返回数据
前言 很多情况下咱们在做浏览器插件的时候需要拿fetch的返回数据而不影响功能正常操作. 原理 hook原理咱就不讲了,跟其他hook差不多.具体来看看如何实现返回的. 用过fetch的朋友应该都知道 ...
- 解决CORS跨域问题
首先创建一个实现Filter的cors过滤器 import lombok.extern.slf4j.Slf4j; import org.springframework.context.Applicat ...
- 思科数据中心CCIE v3.0考试内容
考试内容: CCIE DC LAB V3.0 考试内容 1 Design 30 + 选择,拖图及勾选题 2 Deploy&Operate&Optimize 1 套 含3部分 备考安排: ...
- 关于.NET CORE 的 swagger 分组简单使用
在避免swagger接口过多时,可以使用分组进行功能区分 简单三部曲 1.添加分组和级别名称 services.AddSwaggerGen(c => { #region swagger分组 c. ...
- 利用shell脚本来监控linux系统的负载与CPU占用情况
一.安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具) 1.下载安装: http://downloads.sourceforge.net/msmtp/msmtp-1.4 ...
- OS-lab5
OS-lab5 磁盘管理 完成文件系统的第一步就是要能够处理磁盘等外设的信息. lib/syscall_all.c 处理磁盘的信息,最基本的就是对磁盘进行读写操作. sys_write_dev函数用于 ...
- 最近录了一些python视频教程
最近录了一些python视频教程,目前有机器学习的.python基础知识的,大家可以去B站观看. https://space.bilibili.com/431152063 python机器学习之KNN ...
- AI-Chat问答随笔
Q: 操作系统和驱动的关系 A:操作系统和驱动程序是紧密相关的,它们一起构成了计算机系统中的软件部分,实现了对硬件资源的管理和控制.操作系统作为计算机系统的核心软件,主要负责管理和协调计算机系统中的各 ...
- 记录安装perl-Verilog过程
开始,编译带Verilog::Netlist的脚本,报 YumRepo Error: All mirror URLs are not using ftp, http[s] or file.centos ...
- mysql 优化表空间报错Creating index 'PRIMARY' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again
背景:mysql数据库中有几个表的碎片率太高,浪费了存储空间且降低了读写效率,需要整理. mysql版本:5.6 先用optimize table 试试. 也执行了很久.但是结束后,data_free ...