首页 > 其他分享 >Axios

Axios

时间:2022-12-25 19:46:46浏览次数:60  
标签:axios console log Axios config response

参考官方文档:Axios 中文文档

Axios 和 Fetch 类似,都是基于 Promise ,用来发送网络求请求的

不同的是,Axios 是基于 Ajax 封装的,而 Fetch 是 ES6 中的原生API(这也是Fetch目前来看唯一优于 Axios 的地方,方便测试)

Fetch 请移步 FetchAPI

发送网络请求

 Axios 提供两种方式发送请求:

import axios from "axios"

  1.配置项

axios(config)

  2.请求方式别名

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

配置项

可以向 Axios 传递相关配置来创建请求

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

详细配置项参考:请求配置 | Axios 中文文档

别名

Axios 提供了一些请求别名的方法,可以直接发送指定别名的请求:

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

Axios 实例

在实际应用中,我们可以通过创建 Axios 实例来自定义默认请求配置:

const instance = axios.create({
// baseURL 将自动加在 url 前面,除非 url 是一个绝对 URL。
// 它可以通过设置一个 baseURL 便于为 axios 实例的方法传递相对 URL baseURL: 'https://some-domain.com/api/',
// timeout 指定请求超时的毫秒数。
// 如果请求时间超过 timeout 的值,则请求会被中断 timeout: 1000 });

Axios 响应结构

当使用 then 时,将接收如下响应

axios.get('/user/12345')
  .then(function (response) {
    console.log(response.data);
    console.log(response.status);
    console.log(response.statusText);
    console.log(response.headers);
    console.log(response.config);
  });
{
  // `data` 由服务器提供的响应
  data: {},

  // `status` 来自服务器响应的 HTTP 状态码
  status: 200,

  // `statusText` 来自服务器响应的 HTTP 状态信息
  statusText: 'OK',

  // `headers` 是服务器响应头
  // 所有的 header 名称都是小写,而且可以使用方括号语法访问
  // 例如: `response.headers['content-type']`
  headers: {},

  // `config` 是 `axios` 请求的配置信息
  config: {},

  // `request` 是生成此响应的请求
  // 在node.js中它是最后一个ClientRequest实例 (in redirects),
  // 在浏览器中则是 XMLHttpRequest 实例
  request: {}
}

默认配置

可以手动指定或修改默认的配置项,用于全局所有的请求或所有使用该实例的请求

全局 axios 默认值

通过 defaults 属性可以修改全局默认配置项

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';

自定义实例默认值

同样通过实例的 defaults 属性修改当前默认配置项

// 创建实例时配置默认值
const instance = axios.create({
  baseURL: 'https://api.example.com'
});

// 创建实例后修改默认值
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

配置的优先级

配置将会按优先级进行合并。它的顺序是:显示全局的默认配置项,然后是实例的 defaults 属性,最后是请求的 config 参数。后面的优先级要高于前面的。

错误处理

axios 支持使用 catch 捕获错误

axios.get('/user/12345')
  .catch(function (error) {
    if (error.response) {
      // 请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else if (error.request) {
      // 请求已经成功发起,但没有收到响应
      // `error.request` 在浏览器中是 XMLHttpRequest 的实例,
      // 而在node.js中是 http.ClientRequest 的实例
      console.log(error.request);
    } else {
      // 发送请求时出了点问题
      console.log('Error', error.message);
    }
    console.log(error.config);
  });

 

标签:axios,console,log,Axios,config,response
From: https://www.cnblogs.com/xt112233/p/17004407.html

相关文章

  • axios 下载文件流或者预览在线pdf
    问题:后端返回文件流,前端使用axios下载或者在线预览下载文件流importaxiosfrom'axios'//设置响应类型为blobaxios.get('/api/app/xxx/downloadExcel',{response......
  • axios
    一、(1)、Axios是专注于网络数据请求的库;(2)、相比于原生的XMLHttpRequest对象,axios简单易用;(3)、相比于jQuery,axios更加轻量化,只专注于网络数据的请求;二、(1): (2): (3): ......
  • axios---根据文件路径转换成Blob类型进行下载
    在做下载功能过程中,常常遇到接口跨域的行为,因为权限不能够直接访问而无法实现下载的情况下,可以将文件路径转成文件流下载下来。下载方法//下载getDownLoadFil......
  • Axios异步通信
    四.Axios异步通信1什么是Axios?Axios是一个类库,基于Promise管理的HTTP库,是前端通信框架,可以用在浏览器和node.js中。axios实现了对ajax的封装,常用于Ajax请求。注解......
  • Ajax和Axios
     Ajax:      案例:(w3school有教程)前端代码:1//1.创建核心对象2varxhttp;3if(window.XMLHttpRequest){4xhttp=n......
  • VUE使用axios数据请求时报错 TypeError Cannot set property 'xxxx' of undefined 的
    正常情况下在data里面都有做了定义data(){list:"haha"}在函数里面进行赋值this.list=response.data.result这时候你运行时会发现,数据可以请求到,但是会报错TypeErr......
  • 第一节:项目结构介绍、Vuex的应用、axios封装思路、菜单权限、按钮权限剖析
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblog......
  • vite+ts+vue3+router4+Pinia+ElmPlus+axios+mock项目基本配置
    1.vite+TS+Vue3npmcreateviteProjectname:...yourProjectNameSelectaframework:>>VueSelectavariant:>>Typescrit2.修改vite基本配置配置Vite{#configu......
  • js axios配置和响应
     配置<scriptsrc="../node_modules/axios/dist/axios.js"></script><script>//配置constinstance=axios.create({//设置根路径......
  • Axios异步通信
    什么是Axios?Axios是一个开源的可以用在浏览器端和NodeJS的异步通信框架,主要作用就是实现AJAX异步通信,其功能特点如下:··从浏览器中创建XMLHttpRequests··从node......