概述:

1.axios:一个基于Promise用于浏览器和nodejs的HTTP客户端。本质是对ajax的封装。

特征:

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

2.安装

  • npm install axios
  • import axios from "axios"

3.API

1 axios(config)

    eg: axios({
method:"post",
url:"/user",
data:{
firstName:"nanhua",
lastName:"qiushui"
}
});

2.axios(url,config) //默认为get请求

3.请求方法别名

        axios.request(config)
axios.get(url,config)
axios.post(url,data,config)
axios.delete(url,config)
axios.head(url,config)
axios.put(url,data,config)
axios.patch(url,data,config)

4.并发

        自定义配置创建axios实例
var instance = axios.create({
baseURL:"https://some-domain.com/api/",
timeout:1000,
headers:{"X-Custom-Header":"foobar"}
})
自定义实例默认值
//创建实例时设置
//实例创建后修改默认值(设置全局axios默认值)
axios.defaults.baseURL = "https://api.example.com";
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded"; 并发:axios.all(iterable)
eg: axios.all([
axios.get("https://api.github.com/xxx/1");
axios.get("https://api.github.com/xxx/2");
]).then(axios.spread(function(userResp,reposResp){
console.log("User",userResp.data);
console.log("Repositories",reposResp.data);
}))
    * 当所有的请求都完成后,会收到一个数组,它包含着响应对象,其中的顺序和请求发送的顺序相同,可以用axios.spread分割成多个单独的响应对象。

5.config参数

        baseURL: 'https://some-domain.com/api/',  //将自动加在url前面,除非url是一个绝对URL

        //允许在向服务器发送前,修改请求数据
//只能用在PUT\POST\PATCH
//后面数组的函数必须返回一个字符串/ArrayBuffer或Stream
transformRequest:[function(data){
//对data进行任意转换处理
return data;
}], //在传递给then/catch之前,允许修改响应数据
transformResponse: [function (data) {
return data;
}], //即将被发送的自定义请求头
headers:{
'X-Requested-With': 'XMLHttpRequest'
}, //即将与请求一起发送的URL参数
params:{
ID: 12345
}, //负责params序列化的函数
paramsSerializer:function(params){
return Qs.stringify(params,{arrayFormat: "brackets"});
}, //超时
timeout: 1000, //表示跨域请求时是否需要使用凭证
withCredentials: false, //允许响应内容的最大尺寸
maxContentLength: 2000, //对打重定向数目
maxRedirects:5, //是否启用长连接
httpAgent: new http.Agent({
keepAlive: true
}),
httpsAgent: new https.Agent({
keepAlive: true
}), //代理服务器设置
proxy:{
host:"127.0.0.1",
port: 9000,
auth:{
username:"nanhuaqiushui",
password:"Huawei@123"
}
}

6.响应结构

    {
data:{},
status:200,
statusText:"OK",
headers:{}, //服务器响应的头
config:{} //为请求提供的配置信息
}

7.拦截器

    //请求拦截器
axios.interceptors.request.use(function(config){
//发送请求之前做些什么
return config;
},function(error){
//请求错误之后做些什么
return Promise.reject(error);
})
//响应添加拦截器
axios.interceptors.response.use(function(config){
//发送请求之前做些什么
return config;
},function(error){
//请求错误之后做些什么
return Promise.reject(error);
}) //移除拦截器
var myInterceptor = axios.interceptors.request.use(function(){
...
})
axios.interceptors.request.eject(myInterceptor);

新兴实践

const service = axios.create({
baseURL: process.env.BASE_API,
timeout: 100000
}) // 请求拦截器
service.interceptors.request.use(
config => {
config.headers['Content-Type'] = 'application/json'
if (store.getters.token) {
// 让每个请求携带token
config.headers['Authorization'] = store.getters.token
}
return config
},
error => {
Toast.failed('网络异常,请检查网络连接')
console.log(error) // for debug
return Promise.reject(error)
}
) // 响应拦截器
service.interceptors.response.use(
response => {
const res = response.data
if (res.code && res.code !== 200) {
Toast.failed(res.message)
}
return response
},
error => {
Toast.failed('网络异常,请检查网络连接')
return Promise.reject(error)
}
)
export default service

axios基础用法的更多相关文章

  1. PropertyGrid控件由浅入深(二):基础用法

    目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...

  2. logstash安装与基础用法

    若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...

  3. elasticsearch安装与基础用法

    来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...

  4. BigDecimal最基础用法

    BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...

  5. Vue组件基础用法

    前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...

  6. Smarty基础用法

    一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...

  7. 前端自动化测试神器-Katalon的基础用法

    前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...

  8. Bootstrap fileinput:文件上传插件的基础用法

    官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...

  9. asyncio 基础用法

    asyncio 基础用法 python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? asyncio是Python 3.4版本引入 ...

随机推荐

  1. scss-嵌套属性

    使用scss不但可以实现选择器的嵌套,属性也可以进行嵌套. 首先看一段代码实例: nav { border-style: solid; border-width: 1px; border-color: ...

  2. CKEditor的使用

    需要配置的功能列表 //class: cke_button( 按钮 ) , ck_combo(下拉) /* 需要配置的功能列表 document:保存(save).新建(newpage).预览(pre ...

  3. 【嵌入式】安装Linux系统到开发板

    一.开发板基本介绍 Flash --相当于硬盘 RAM -- 内存 Micro USB或232串口 连电脑 USB 接口连摄像头 启动方式 选择开关 :SD卡启动或NAND FLASH 启动 USB转 ...

  4. PHP header() session_start() 函数前为什么不能有输出?

    前阵面试遇到的问题,当时没答上来,后来查了些资料,仍未得到答案.今天研究HTTP请求,终于知道了答案. HTTP 函数允许在其他输出被发送之前,对由 Web 服务器发送到浏览器的信息进行操作. HTT ...

  5. js原形对象

    function clock(hour,minute,second){ this.constructor = clock ;//默认实现 /**/ } clock.prototype={ constr ...

  6. haproxy学习——安装(一)

    安装包:haproxy-1.5.4.tar.gz (挺小的,大约1.3M) ①.首先要sz到本地虚拟机上(centos-6.5),tar zxvf haproxy-1.5.4.tar.gz,完成解压. ...

  7. maven---Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4

    Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4 Failure to transfer or ...

  8. WAKE-WIN10-SOFT-VS2013及工具

    1,下载安装,,,,,,, 2,配置 3opencv 3,1官网:http://opencv.org/ 3,3VS2013+OPENCV249配置 http://jingyan.baidu.com/a ...

  9. Python——追加学习笔记(二)

    文件处理 # 文件内移动 seek()方法可以在文件中移动文件指针到不同的位置,offset字节代表相对于某个位置偏移量,默认为0,代表从文件开头算起,1代表从当前位置算起,2代表从文件末尾算起. s ...

  10. 通过yum安装最新服务

    给yum添加所安装服务最新rpm源  #这里用mysql为例 # wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm # y ...