axios在实际项目中的使用介绍
1.axios本身就封装了各种数据请求的方法
执行 GET 请求 // 为给定 ID 的 user 创建请求
axios.get('/user?ID=12345')
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
}); // 可选地,上面的请求可以这样做
axios.get('/user', {
params: {
ID: 12345
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
}); 执行 POST 请求 axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
2.这里我们根据axios提供的别名,进行调整
新建一个目录叫baseUrl,接着新建一个文件叫baseUrl.js
1)首先我们在开发过程中,会有不同的环境,这里指的是,后端会在不同的环境给我们提供对应的接口(开发环境,测试环境,灰度,线上)这个时候,我们就要对接口的baseUrl做统一处理(这样代码每推到一个环境,我们就不用做任何改变)
// 获取api的baseUrl
export default function getBaseUrl () {
let [baseUrl, urls, protocol] = ['开发环境的api的baseUrl', location.href.toLowerCase(), 'http://']
//判断协议,看是http还是https
if (location.protocol === 'https:') {
protocol = 'https://'
}
//一般api的baseUrl是和域名相同的,这里我们就通过域名来判断
if (urls.match(/测试环境的baseUrl/) && urls.match(/测试环境的baseUrl/)[0] === '测试环境的域名') {
baseUrl = protocol + '测试环境的域名'
}
//线上的
if (urls.match(/线上环境的域名/) && urls.match(/线上环境的域名/)[0] === '线上环境的域名') {
baseUrl = protocol + '线上的域名'
}
return baseUrl
}
3.现在我们根据axios提供的请求别名,处理两个我们常用的请求方法
新建一个文件就叫axios.js
1)首先我们使用es6提供的方法,引入axios和我们封装的getBaseUrl方法
import axios from 'axios'
import getBaseUrl from '文件路径' 2)配置config
let baseUrl = getBaseUrl()
//这里我们只介绍这两个配置项,其他的不做详细解释,想要查看更多内容请参考官方文档
const config ={
//baseURL将自动加在url(这个url也就是'/'的路径)上
baseURL:baseUrl,
//表示跨域请求时是否需要使用凭证,默认是false,但是对于一些,有登陆时效或者cookie凭证的请求时,这个最好加上
withCredentials: false
} 3)处理get请求传递过来的参数(因为get请求的参数是拼接在请求地址上的,所以这里我们需要手动处理一下get请求的url)
let urlEncode = (url, data) => {
if (typeof (url) === 'undefined' || url === null || url === '') return ''
if (typeof (data) === 'undefined' || data === null || typeof (data) !== 'object') return url
url += (url.indexOf('?') !== -1) ? '' : '?'
for (let k in data) {
url += ((url.indexOf('=') !== -1) ? '&' : '') + k + '=' + encodeURI(data[k])
}
return url
} 4)封装post和get请求 const get = (url, params) => {
//这里的url是请求数据的传递过来的
url = urlEncode(url, params)
return axios.get(url,config)
} consot post = (url, params) => {
return axios.post(url, params, config)
} 5)将post和get方法暴露出去 export {
get,
post
}
1)引入我们第三部处理好的post和get请求方法
import * as axios from '文件路径' 2)封装
const Logins = params => axios.post('/user/login', params) const List = params => axios.get('/list', params)
5.在组件中使用
1)引入我们第四步处理好的方法(需要什么引入什么)
import { Logins, List } from '文件路径'
_Login () {
// 测试
Logins({
user_name: 'user_name',
pass: 'pass'
}).then(data => {
if (data.data.code === '0') {
console.log(data)
}
})
}
......
axios在实际项目中的使用介绍的更多相关文章
- AutoMapper之ABP项目中的使用介绍
最近在研究ABP项目,昨天写了Castle Windsor常用介绍以及其在ABP项目的应用介绍 欢迎各位拍砖,有关ABP的介绍请看阳光铭睿 博客 AutoMapper只要用来数据转换,在园里已经有很多 ...
- 浅谈 Axios 在 Vue 项目中的使用
介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 特性 它主要有如下特性: 浏览器端发起XMLHttpRequests请求 Node端发起http ...
- 封装axios在vue-cli项目中便捷使用
首先创建一个vue-cli搭建起来的vue项目这个不用多说了. 安装axios,使用npm install axios --save命令安装依赖,这时候项目的package.json文件中的" ...
- 开源物联网框架ServerSuperIO(SSIO),项目中实践应用介绍
一.项目背景 我们是传统行业,但是我们有一颗不传统的心.企业用户遍布国内和国外,面对行业,要建设行业级的(大)数据平台.一提到大数据平台,大家往往想到Hadoop.Spark.Nosql.分布式等等, ...
- axios在vue项目中的一种封装方法
记录下之前领导封装的axios请求 npm install axios // 安装 单独写个文件配置axios,此处为request.js import axios from 'axios' //自定 ...
- ABP项目中的使用AutoMapper
AutoMapper之ABP项目中的使用 最近在研究ABP项目,昨天写了Castle Windsor常用介绍以及其在ABP项目的应用介绍 欢迎各位拍砖,有关ABP的介绍请看阳光铭睿 博客 AutoMa ...
- vue项目中关于axios的简单使用
axios介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中 官方仓库:https://github.com/axios/axios 中文文档:htt ...
- vue-cli项目中使用axios
前言 前后端数据交互中,我们使用最多的就是jQuey中的ajax进行数据交互,但是随着大前端日益的扩大,越来越多的库和框架也渐渐的出现在前端开发人员面前,而本编博客需要介绍的就是在vue-cli项目中 ...
- SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL
1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...
随机推荐
- IDEA UI版本取消Output窗口打印消息的条数的限制
打开IDEA的安装目录-->进入bin文件夹-->编辑idea.properties文件::修改idea.cycle.buffer.size=1024为idea.cycle.buffer. ...
- bzoj 4806: 炮【dp】
同1801 注意到一行只能放012个炮,我们只需要知道列的状态,不用状压行 所以设f[i][j][k]表示前i行有j列有1个炮,有k列有2个炮的方案数 然后分情况讨论转移就行了 #include< ...
- P1128 [HNOI2001]求正整数
传送门 rqy是我们的红太阳没有它我们就会死 可以考虑dp,设\(dp[i][j]\)表示只包含前\(j\)个质数的数中,因子个数为\(i\)的数的最小值是多少,那么有转移方程 \[f[i][j]=m ...
- 基于ASP.Net Core开发一套通用后台框架记录-(数据库设计(权限模块))
写在前面 本系列博客是本人在学习的过程中搭建学习的记录,如果对你有所帮助那再好不过.如果您有发现错误,请告知我,我会第一时间修改. 前期我不会公开源码,我想是一点点敲代码,不然复制.粘贴那就没意思了. ...
- Linux安装PHP环境
简介: PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要 ...
- ACM_递推题目系列之二认错人(递推dp)
递推题目系列之二认错人 Time Limit: 2000/1000ms (Java/Others) Problem Description: 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼 ...
- C# 事件与委托(转载)
委托的定义 delegate 是 C# 中的一种类型,它实际上是一个能够持有对某个方法的引用的类.与其它的类不同,delegate 类能够拥有一个方法的签名(signature),并且它"只 ...
- Android 仿 新闻阅读器 菜单弹出效果(附源码DEMO)
这一系列博文都是:(android高仿系列)今日头条 --新闻阅读器 (一) 开发中碰到问题之后实现的,觉得可能有的开发者用的到或则希望独立成一个小功能DEMO,所以就放出来这么一个DEMO. 原本觉 ...
- 常用css属性总结
边框修饰:border------>top,bottom,left,right上下左右边框 分为:color,类型style{ groove,dashed,ridge,solid}一个值---- ...
- 如何利用CSS中的ime-mode用来控制页面上文本框中的全角/半角输入
css 之 ime-mode语法:ime-mode : auto | active | inactive | disabled取值:auto : 默认值.不影响ime的状态.与不指定 ime-mode ...