概述:

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. 05.while循环的练习

    练习1: namespace _05.while循环练习01 { class Program { static void Main(string[] args) { //打印100次"努力学 ...

  2. ThreadPoolExecutor实现原理

    转载:https://blog.csdn.net/yanyan19880509/article/details/52718497 前言 做java开发的,一般都避免不了要面对java线程池技术,像to ...

  3. express 请求跨域后端解决方法CORS

    CORS全称Cross-Origin Resource Sharing,是HTML5规范定义的如何跨域访问资源. Origin表示本域,也就是浏览器当前页面的域.当JavaScript向外域(如sin ...

  4. 工作流一期上线原创小故事——【加签】OR【不准】

    亲!您有过选择[加签]还是审核[不准]的烦恼吗? 加签分为:向前加签和向后加签,这个相信大家都很熟悉了吧. 审核分为:准和不准,就是√和×,这个相信大家也很熟悉了. 提示①:相邻的2个人审核时,如果意 ...

  5. 【Leetcode】【Easy】Reverse Integer

    Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 Have you ...

  6. php xml字符串转数组

    function xmltoarr($path){//xml字符串转数组 $xmlfile = file_get_contents($path);//提取xml文档中的内容以字符串格式赋给变量 $ob ...

  7. 三、python webservice

    #!/usr/bin/python # -*- coding: utf-8 -*- import logging import suds url="http://172.17.2.199:8 ...

  8. Perl Unicode全攻略

    Perl Unicode全攻略 耐心看完本文,相信你今后在unicode处理上不会再有什么问题. 本文内容适用于perl 5.8及其以上版本. perl internal form 在Perl看来, ...

  9. Hybris ECP(Enterprise Commerce Platform)的调试

    This blog is written to demonstrate how to setup debug environment for Hybris ECP(Enterprise Commerc ...

  10. linux命令有用

    uptime 命令用来输出系统任务队列信息 last 列出目前与过去登入系统的用户相关信息 free 用来显示系统内存状态 ps 相應的選項組合為ps -ef.ps aux,可以通過這些組合準確定位系 ...