参考:https://www.awesomes.cn/repo/mzabriskie/axios

axios 介绍

基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用

  • 功能特性

在浏览器中发送 XMLHttpRequests 请求
在 node.js 中发送 http请求
支持 Promise API
拦截请求和响应
转换请求和响应数据
自动转换 JSON 数据
客户端支持保护安全免受 XSRF 攻击

GET请求

//通过给定的ID来发送请求
axios.get('/user?ID=12345').then(function(response){
  console.log(response);
}).catch(function(err){
  console.log(err);
});

//以上请求也可以通过这种方式来发送
axios.get('/user',{
  params:{ID:12345}
}).then(function(response){
  console.log(response);
}).catch(function(err){
  console.log(err);
});

POST请求

axios.post('/user',{
  firstName:'Fred',
  lastName:'Flintstone'
}).then(function(res){
  console.log(res);
}).catch(function(err){
  console.log(err);
});

一次性并发多个请求

function getUserAccount(){
  return axios.get('/user/12345');
}
function getUserPermissions(){
  return axios.get('/user/12345/permissions');
}
axios.all([getUserAccount(),getUserPermissions()]).then(axios.spread(function(acct,perms){
  //当这两个请求都完成的时候会触发这个函数,两个参数分别代表返回的结果
}))

axios可以通过配置(config)来发送请求

//发送一个`POST`请求
axios({
  method:"POST",
  url:'/user/12345',
  data:{
    firstName:"Fred",
    lastName:"Flintstone"
  }
});

//发送一个`GET`请求(默认的请求方式)
axios('/user/12345')

请求的配置(request config)

以下就是请求的配置选项,只有url选项是必须的,如果method选项未定义,那么它默认是以GET的方式发出请求

{

url:'/user',

//default 请求资源的方式
method:'get'

// 如果`url`不是绝对地址,那么`baseURL`将会加到`url`的前面
baseURL:'https://some-domain.com/api/',

//`transformRequest 请求发送到服务器之前对请求的数据做出一些改动, 适用于以下请求方式:`put/post/patch`,必须返回一个字符串、-一个`ArrayBuffer`或者`Stream`
transformRequest:[function(data){
  return data;
}],

//`transformResponse`选项允许我们在数据传送到`then/catch`方法之前对数据进行改动
transformResponse:[function(data){
  return data;
}],

//`headers`选项是需要被发送的自定义请求头信息
headers: {'X-Requested-With':'XMLHttpRequest'},

//`params`选项是要随请求一起发送的请求参数----一般链接在URL后面
params: {
  ID:12345
},

//`paramsSerializer`是一个可选的函数,起作用是让参数(params)序列化
paramsSerializer: function(params){
  return Qs.stringify(params,{arrayFormat:'brackets'})
},

//`data`选项是作为一个请求体而需要被发送的数据,该选项只适用于方法:`put/post/patch`
data {
  firstName:"Fred"
},

//`timeout`选项定义了请求发出的延迟毫秒数
timeout:1000,

//`withCredentails`选项表明了是否是跨域请求
withCredentials:false,//default

//返回数据的格式
responseType:'json',//default

//`httpAgent/httpsAgent`定义了当发送http/https请求要用到的自定义代理,/keeyAlive在选项中没有被默认激活
httpAgent: new http.Agent({keeyAlive:true}),
httpsAgent: new https.Agent({keeyAlive:true}),

//proxy定义了主机名字和端口号,
proxy: {
  host:'127.0.0.1',
  port: 9000,
  auth: {
    username:'skda',
    password:'radsd'
  }
}

}

请求返回的内容

{
  data:{},
  status:200,
  //从服务器返回的http状态文本
  statusText:'OK',
  //响应头信息
  headers: {},
  //`config`是在请求的时候的一些配置信息
  config: {}
}

(生产)axios - 请求接口的更多相关文章

  1. axios请求接口的踩坑之路

    1.跨域问题除了前端安装插件还需要后端php设置,设置如下 Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, ...

  2. vue 中使用 axios 请求接口,请求会发送两次问题

    在开发项目过程中,发现在使用axios调用接口都会有两个请求,第一个请求时,看不到请求参数,也看不到请求的结果:只有第二次请求时才会有相应的请求参数以及请求结果: 那为甚么会有这么一次额外的请求呢,后 ...

  3. 为什么axios请求接口会发起两次请求

    之前在使用axios发现每次调用接口都会有两个请求,第一个请求时option请求,而且看不到请求参数,当时也没注意,只当做是做了一次预请求,判断接口是否通畅,但是最近发现并不是那么回事. 首先我们知道 ...

  4. vue项目axios请求接口,后端代理请求接口404,问题出现在哪?

    在vue项目中,列表数据需要用到qq音乐接口中的数据,但是直接请求不行,有host及referer限制,需要采用后端代理的方式.借助axios及node的express,在dev-server.js中 ...

  5. vue 利用axios请求接口下载excel

    一般有三种方法: 方法一: 通过a标签下载 // href为文件的存储路径或者地址,download为问文件名 <a href="/images/download.jpg" ...

  6. axios请求接口的时候带一个参数

    getHomeInfo () { this.axios.get('/api/index.json?city=' + this.city) .then(this.getHomeInfoSucc) } 尽 ...

  7. axios,vue-echarts, async, vue 图表数据处理; axios 跨域代理; 异步同步请求接口;生命周期函数

    1.vue-echarts 安装和组件引用 插件官网 https://github.com/ecomfe/vue-echarts 安装 npm install eacharts vue-echarts ...

  8. Vue+axios统一接口管理

    通过axios请求接口已经很简单了,但最近在做一个vue项目,想着把axios请求再封装一下,这样api就可以只在一处配置成方法,在使用的时候直接调用这个方法. 但咱们不用每个接口都定义成一个啰嗦的a ...

  9. vue-cli项目开发/生产环境代理实现跨域请求+webpack配置开发/生产环境的接口地址

    一.开发环境中跨域 使用 Vue-cli 创建的项目,开发地址是 localhost:8080,需要访问非本机上的接口http://10.1.0.34:8000/queryRole.不同域名之间的访问 ...

随机推荐

  1. 关于javascript数据存储机制的一个案例。

    之前在学习js的结合性的时候,我有点不太明白,在网上找到一个比较经典的C语言优先级结合性的案例,就是下边这一个.本想在js之中测试一番,结果竟然发现得出的结果和网上的不一样,这令我百思不得其解,后经高 ...

  2. 10、OpenCV Python 图像二值化

    __author__ = "WSX" import cv2 as cv import numpy as np #-----------二值化(黑0和白 255)---------- ...

  3. 平衡树学习笔记(2)-------Treap

    Treap 上一篇:平衡树学习笔记(1)-------简介 Treap是一个玄学的平衡树 为什么说它玄学呢? 还记得上一节说过每个平衡树都有自己的平衡方式吗? 没错,它平衡的方式是......rand ...

  4. 实验吧之Canon

    解压zip文件得到一个mp3文件和一个zip压缩包,解压需要密码,那密码就在mp3里面,使用MO3Stego好像不能解析出文本,说明解析需要密码,此时通过网上的讨论说标题Canon就是密码,就试着用了 ...

  5. HDU2665(可持久化线段树板子)

    1.题意有坑,实际要求第k小. 2.没学过动态开点也没学过主席树,看一下博主思路然后妄想自己实现的后果就是拿命去调bug. const int maxn = 1e5 + 5; int test, n, ...

  6. HDU-Digital Roots(思维+大数字符串模拟)

    The digital root of a positive integer is found by summing the digits of the integer. If the resulti ...

  7. poj2083 分形(图形的递归)

    题目传送门 代码有注释. #include<iostream> #include<algorithm> #include<cstdlib> #include< ...

  8. Vue全家桶了解一下(待补充)

    vue全家桶了解一下 一.vue+vue-router+vuex+axios1.vue:使用vue-cli,生成最基本的vue项目2.vue-router:vue项目中的路由管理插件3.vuex:vu ...

  9. python基础之1--Python入门

    第1章 Python生态圈 第2章 编程与编程语言 python是一门编程语言,作为学习python的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? 2.1 编程的目的: 计算机 ...

  10. 一般小的maven pom

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...