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
}
4.根据不同的接口封装不同的请求方法(这个方法是用来直接获取数据的)
 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在实际项目中的使用介绍的更多相关文章

  1. AutoMapper之ABP项目中的使用介绍

    最近在研究ABP项目,昨天写了Castle Windsor常用介绍以及其在ABP项目的应用介绍 欢迎各位拍砖,有关ABP的介绍请看阳光铭睿 博客 AutoMapper只要用来数据转换,在园里已经有很多 ...

  2. 浅谈 Axios 在 Vue 项目中的使用

    介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 特性 它主要有如下特性: 浏览器端发起XMLHttpRequests请求 Node端发起http ...

  3. 封装axios在vue-cli项目中便捷使用

    首先创建一个vue-cli搭建起来的vue项目这个不用多说了. 安装axios,使用npm install axios --save命令安装依赖,这时候项目的package.json文件中的" ...

  4. 开源物联网框架ServerSuperIO(SSIO),项目中实践应用介绍

    一.项目背景 我们是传统行业,但是我们有一颗不传统的心.企业用户遍布国内和国外,面对行业,要建设行业级的(大)数据平台.一提到大数据平台,大家往往想到Hadoop.Spark.Nosql.分布式等等, ...

  5. axios在vue项目中的一种封装方法

    记录下之前领导封装的axios请求 npm install axios // 安装 单独写个文件配置axios,此处为request.js import axios from 'axios' //自定 ...

  6. ABP项目中的使用AutoMapper

    AutoMapper之ABP项目中的使用 最近在研究ABP项目,昨天写了Castle Windsor常用介绍以及其在ABP项目的应用介绍 欢迎各位拍砖,有关ABP的介绍请看阳光铭睿 博客 AutoMa ...

  7. vue项目中关于axios的简单使用

    axios介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中 官方仓库:https://github.com/axios/axios 中文文档:htt ...

  8. vue-cli项目中使用axios

    前言 前后端数据交互中,我们使用最多的就是jQuey中的ajax进行数据交互,但是随着大前端日益的扩大,越来越多的库和框架也渐渐的出现在前端开发人员面前,而本编博客需要介绍的就是在vue-cli项目中 ...

  9. SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL

    1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...

随机推荐

  1. SQLAlchemy框架---ORM思想

  2. MySQL-day1数据库的安装与介绍

    一.mysql的安装步骤 以5.7.20版本为例: 第1步: 第2步: 第3步: 第4步: 第5步: 第6步: 第7步: 第8步: 第9步: 第10步: 第11步: 第12步: 第13步: 第14步: ...

  3. C#面向过程之类型转换、算术运算符、关系运算符、逻辑运算符、if-else语句、switch-case、循环结构(while、for)、三元表达式

    数据类型转换: int.parse()只能转换string类型的 当参数为null时会报异常int i =Convert.ToInt32(false) 运行结果是0int i =Convert.ToI ...

  4. Postgresql的一些命令

    显示所有数据表: \dt 显示表结构:  \d YOUR_TABLE 进入数据库: psql DATABASE_NAME 显示所有数据库: \list 退出: \q 删除数据库: dropdb DAT ...

  5. open_basedir 报错

    Warning: require(): open_basedir restriction in effect. File(/home/www/blog/vendor/autoload.php) is ...

  6. 299 Bulls and Cows 猜数字游戏

    你正在和你的朋友玩猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜.每次他猜测后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为”Bulls“, 公牛),有多少位数字 ...

  7. java IO流 之 字节输出流 OutputString()

    Java学习重点之一:OutputStream 字节输出流的使用 FileOutPutStream:子类,写出数据的通道 步骤: 1.获取目标文件 2.创建通道(如果原来没有目标文件,则会自动创建一个 ...

  8. 两个input可能会用到的小方法

    1.一个普通的input元素,在不被 form包裹的时候,如何跳转或搜索 var oInput = document.getElementsByTagName('input')[0]; oInput. ...

  9. 对SNL语言的解释器实现尾递归优化

    对于SNL语言解释器的内容可以参考我的前一篇文章<使用antlr4及java实现snl语言的解释器>.此文只讲一下"尾递归优化"是如何实现的--"尾递归优化& ...

  10. Protecting resources in iPhone and iPad apps

    源码:https://github.com/lingzhao/EncryptedResourceDemo UPDATE: The example project has been updated to ...