axios - http请求库

简介
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
使用cdn

使用npm
npm install axios

1.通过向 axios 传递相关配置来创建请求axios(config)注:默认请求为GET请求,例:axios('/user/12345');为所有支持的请求方法提供了别名(列举比较常用的别名)* axios.request(config)* axios.get(url[, config])* axios.post(url[, data[, config]])config 配置参数{// `url` 是用于请求的服务器 URLurl: '/user',// `method` 是创建请求时使用的方法method: 'get', // 默认是 get// `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。// 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URLbaseURL: 'https://some-domain.com/api/',// `transformRequest` 允许在向服务器发送前,修改请求数据// 只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法// 后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 StreamtransformRequest: [function (data) {// 对 data 进行任意转换处理return data;}],// `transformResponse` 在传递给 then/catch 前,允许修改响应数据transformResponse: [function (data) {// 对 data 进行任意转换处理return data;}],// `headers` 是即将被发送的自定义请求头headers: {'X-Requested-With': 'XMLHttpRequest'},// `params` 是即将与请求一起发送的 URL 参数,(Get请求)// 必须是一个无格式对象(plain object)或 URLSearchParams 对象params: {ID: 12345},// `paramsSerializer` 是一个负责 `params` 序列化的函数// (e.g. https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/)paramsSerializer: function(params) {return Qs.stringify(params, {arrayFormat: 'brackets'})},// `data` 是作为请求主体被发送的数据// 只适用于这些请求方法 'PUT', 'POST', 和 'PATCH'// 在没有设置 `transformRequest` 时,必须是以下类型之一:// - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams// - 浏览器专属:FormData, File, Blob// - Node 专属: Streamdata: {firstName: 'Fred'},// `timeout` 指定请求超时的毫秒数(0 表示无超时时间)// 如果请求话费了超过 `timeout` 的时间,请求将被中断timeout: 1000,// `withCredentials` 表示跨域请求时是否需要使用凭证withCredentials: false, // 默认的// `adapter` 允许自定义处理请求,以使测试更轻松// 返回一个 promise 并应用一个有效的响应 (查阅 [response docs](#response-api)).adapter: function (config) {/* ... */},// `auth` 表示应该使用 HTTP 基础验证,并提供凭据// 这将设置一个 `Authorization` 头,覆写掉现有的任意使用 `headers` 设置的自定义 `Authorization`头auth: {username: 'janedoe',password: 's00pers3cret'},// `responseType` 表示服务器响应的数据类型,可以是 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'responseType: 'json', // 默认的// `xsrfCookieName` 是用作 xsrf token 的值的cookie的名称xsrfCookieName: 'XSRF-TOKEN', // default// `xsrfHeaderName` 是承载 xsrf token 的值的 HTTP 头的名称xsrfHeaderName: 'X-XSRF-TOKEN', // 默认的// `onUploadProgress` 允许为上传处理进度事件onUploadProgress: function (progressEvent) {// 对原生进度事件的处理},// `onDownloadProgress` 允许为下载处理进度事件onDownloadProgress: function (progressEvent) {// 对原生进度事件的处理},// `maxContentLength` 定义允许的响应内容的最大尺寸maxContentLength: 2000,// `validateStatus` 定义对于给定的HTTP 响应状态码是 resolve 或 reject  promise 。如果 `validateStatus` 返回 `true` (或者设置为 `null` 或 `undefined`),promise 将被 resolve; 否则,promise 将被 rejectevalidateStatus: function (status) {return status >= 200 && status < 300; // 默认的},// `maxRedirects` 定义在 node.js 中 follow 的最大重定向数目// 如果设置为0,将不会 follow 任何重定向maxRedirects: 5, // 默认的// `httpAgent` 和 `httpsAgent` 分别在 node.js 中用于定义在执行 http 和 https 时使用的自定义代理。允许像这样配置选项:// `keepAlive` 默认没有启用httpAgent: new http.Agent({ keepAlive: true }),httpsAgent: new https.Agent({ keepAlive: true }),// 'proxy' 定义代理服务器的主机名称和端口// `auth` 表示 HTTP 基础验证应当用于连接代理,并提供凭据// 这将会设置一个 `Proxy-Authorization` 头,覆写掉已有的通过使用 `header` 设置的自定义 `Proxy-Authorization` 头。proxy: {host: '127.0.0.1',port: 9000,auth: : {username: 'mikeymike',password: 'rapunz3l'}},// `cancelToken` 指定用于取消请求的 cancel token// (查看后面的 Cancellation 这节了解更多)cancelToken: new CancelToken(function (cancel) {})
}2.并发请求axios.all(iterable)axios.spread(callback)//创建请求方法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) {// 两个请求现在都执行完成}));3.创建实例axios.create([config])var instance = axios.create({baseURL: 'https://some-domain.com/api/',timeout: 1000,headers: {'X-Custom-Header': 'foobar'}});// 在实例已创建后修改默认值instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;* instance.request(config)* instance.get(url[, config])* instance.post(url[, data[, config]])//自定义实例默认值instance.defaults.[config配置参数]=值;例: instance.defaults.timeout = 2500;4.全局配置默认值axios.defaults.[config配置参数]=值;例: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';注:配置的优先顺序,config配置 > 实例的defaults配置 > 系统默认配置5.拦截器(直接copy,没来得及分析)// 添加请求拦截器axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么return config;}, function (error) {// 对请求错误做些什么return Promise.reject(error);});// 添加响应拦截器axios.interceptors.response.use(function (response) {// 对响应数据做点什么return response;}, function (error) {// 对响应错误做点什么return Promise.reject(error);});

作者:喜_子
链接:https://www.jianshu.com/p/7903caf9644d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

axios - http请求库相关推荐

  1. axios 跨域_当遇到跨域开发时,我们如何处理好前后端配置和请求库封装

    我们知道很多大型项目都或多或少的采用跨域的模式开发, 以达到服务和资源的解耦和高效利用. 在大前端盛行的今天更为如此, 前端工程师可以通过nodejs或者Nginx轻松搭建起web服务器.这个时候我们 ...

  2. CORS 请求未能成功_当遇到跨域开发时, 我们如何处理好前后端配置和请求库封装(koa/axios版)...

    我们知道很多大型项目都或多或少的采用跨域的模式开发, 以达到服务和资源的解耦和高效利用. 在大前端盛行的今天更为如此, 前端工程师可以通过nodejs或者Nginx轻松搭建起web服务器.这个时候我们 ...

  3. JS HTTP 请求库哪家强?Axios,Request,Superagent,Fetch 还是 Supertest

    JS HTTP 请求库哪家强?Axios,Request,Superagent,Fetch 还是 Supertest Web 开发中客户端与服务器间的交互非常重要,它有利于客户端应用高度动态化.用户通 ...

  4. 学习 axios 源码整体架构,打造属于自己的请求库

    前言 这是学习源码整体架构系列第六篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.本篇文章学习的是实际仓库的代码. 学习源码整体 ...

  5. vue中Axios网络请求之Vue知识点归纳(十)

    本文描述 vue 中 Axios 简述 vue 中使用 Axios 发起 get 请求 vue 中使用 Axios 发起 post 请求 1 简述 Axios是一个基于Promise(ES6中用于处理 ...

  6. 微信小程序 - 引入并使用 Fly.js 请求库(超级详细的教程及运行示例)提供 Fly.js 源码源文件下载,贴心的配置示例及注释,优雅快速的发起 http 网络请求

    前言 咱们在开发微信小程序时,市面上常见的 Axios 请求库无法使用,但好在 Fly.js(官网) 提供了解决方案. 网上大部分教程杂乱无章,本文将从 0 - 1 详细讲解整个引入请求库过程, 实现 ...

  7. Vue安装并使用axios发送请求

    前言 本文主要介绍的是使用在Vue项目中安装并使用axios发送请求 axios介绍 axios是一种Web数据交互方式 它是一个基于promise的网络请求库,作用于node.js和浏览器中,它是 ...

  8. ajax jsonp 中文,miniAjax:一个轻巧而实用的ajax/jsonp HTTP请求库

    一个轻巧迷你的HTTP请求库,专为简单web应用提供了Ajax, jsonp and ready等特性功能! 一个轻巧迷你的HTTP请求库,专为简单web应用提供了Ajax, jsonp and re ...

  9. vue中axios封装请求

    执行 GET 请求 // 向具有指定ID的用户发出请求 axios.get('/user?ID=12345') .then(function (res) {console.log(res); }) . ...

最新文章

  1. 简单DP【p2642】双子序列最大和
  2. java事件驱动模型_Spring事件驱动模型详解
  3. 20 Very Useful Java Code Snippets
  4. Java编程思想读书笔记--第21章并发
  5. 【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(下)
  6. 【BZOJ 1528】 1528: [POI2005]sam-Toy Cars (贪心+堆)
  7. 缓存行cache line概述
  8. java多线程必须掌握吗_多线程模式有什么作用(java多线程必须掌握的知识)
  9. 查询 service monitor 时发生内部错误_通过Service访问应用 (1)
  10. jquery 数组indexof_如何实现一个简化版的 jQuery
  11. 文本获取和搜索引擎中的反馈模型
  12. 【Java程序设计】类与对象的基本概念(下)
  13. 基于SSM的家庭理财系统
  14. PID算法详解及实例分析
  15. 货币的时间价值及股票估值
  16. 德勤:迈向移动操作系统—建立城市交通通用语言
  17. u3d canvas设置
  18. 【艾琪出品】-【福建师范大学】-福师《计算机应用基础》在线作业二参考资料正确答案
  19. 百合佳缘伐谋、珍爱网伐交、伊对伐兵
  20. 微信支付 django

热门文章

  1. python: partical function 偏函数
  2. 笔记 USART RX最好上拉一下
  3. Web自动化测试(二)(全网最给力自动化教程)
  4. 移动定位+视频监控台的组建
  5. 动态规划法求解0-1背包问题
  6. Linux 磁盘划分规则,如何规范的划分,比如300G, 900G,1T, 2T都是如何划分比较好。
  7. 解决M1芯片的Homebrew安装问题--For M1使用者
  8. python调用dll
  9. 波士顿房价数据集.csv(校正版)
  10. 显卡达人修炼计划 [完成篇]