axios详解

1.axios介绍

1.1 什么是axios?

Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js中。

Axios(相比于原生的XMLHttpRequest对象来说)简单易用,(相比于jQuery)axios包尺寸小且提供了易于扩展的接口,是专注于网络请求的库。

axios(ajax i/o system)不是一种新技术,本质上也是对原生XHR(XMLHttpReques)的封装,只不过它是基于Promise的,是Promise的实现版本,符合最新的ES规范。

1.2 axios和ajax的区别

  1. axios是通过promise实现对ajax技术的一种封装,而ajax则是实现了网页的局部数据刷新。

  2. axios可以说是ajax,而ajax不止是axios。

  3. 用法相同,但个别参数不同。

axios用法:

axios({
    url: '/getName',
    method: 'get',
    responseType: 'json', // 默认的
    data: {
        name: 'tom'
    }
}).then(function (response) {
    console.log(response);
    console.log(response.data);
}).catch(function (error) {
    console.log(error);
});

ajax的用法:

$.ajax({
    url: '/getName',
    type: 'get',
    dataType: 'json',
    data: {
      name: 'tom'
    },
    success: function (response) {
      console.log(response);
    }
});

2.axios的基础用法

2.1 安装axios

  • 使用 cdn:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  • 使用 npm:
$ npm install axios
  • 使用 bower:
$ bower install axios
  • 使用 yarn:
$ yarn add axios

2.2 GET请求

通过给定的ID来发送请求

  • 方式一
axios({
    method:"GET",
    url:'/user',
    params:{
	    ID:12345
	}
});
  • 方式二
axios('/user',{
    method:"GET",
    params:{
	    ID:12345
	}
});
  • 方式三
axios.get('/user',{
  params:{
    ID:12345
  }
})
.then(function(response){
	//处理结果
  console.log(response);
})
.catch(function(error){
	//处理错误
  console.log(error);
});

2.3 POST请求

axios.post('/user',{
  firstName:'Fred',
  lastName:'Flintstone'
})
.then(function(res){
	//处理结果
  console.log(res);
})
.catch(function(error){
	//处理错误
  console.log(error);
});

2.4 请求方式的别名

axios对不同请求方式都提供了方便的别名,当我们在使用别名方法的时候,url、method、data这几个参数不需要在配置中声明。

axios.request(config);

axios.get(url[,config]);

axios.delete(url[,config]);

axios.head(url[,config]);

axios.post(url[,data[,config]]);

axios.put(url[,data[,config]])

axios.patch(url[,data[,config]])

3.axios的进阶用法

3.1 axios实例的创建与配置

  • 创建axios实例

语法: axios.create([config])

var instance = axios.create({
  baseURL:"https://some-domain.com/api/",
  timeout:1000,
  headers: {'X-Custom-Header':'foobar'}
});
  • 用创建的实例对象发送请求
instance.get('/a.json',{
	timeout: 3000
}).then()
  • axios相关配置

这些是创建请求时可以用的配置选项。只有 url 是必需的。如果没有指定 method,请求将默认使用 GET 方法。

参数说明
urlurl是请求的服务器地址
methodmethod是请求资源的方式
baseURL如果url不是绝对地址,那么baseURL将会加到url的前面
params将请求参数拼接到url上
data将请求参数放置到请求体里
headers请求头
timeout请求的超时时长,单位毫秒
  • 配置示例
let instance = axios.create({
  // 创建实例时设置配置默
  baseURL: "", //请求的域名/基本地址
  timeout: 2000, //请求的超时时长,单位毫秒,默认。
  url: "/data.json", //请求路径
  method: "get", //请求方法
  headers: {
    //设置请求头————我们可以给请求头添加一些参数
    token: "",
    post: {
       'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
    }
  },
  params: { id: 5 }, //将请求参数拼接到url上
  data: { id: 5 }, //将请求参数放置到请求体里
});
  • 三种配置方式
  1. axios全局配置
axios.defaults.baseURL = 'http://localhost:8080'
axios.defaults.timeout = 1000
  1. axios实例配置
let instance = axios.create();
instance.defaults.timeout = 1000
  1. axios请求配置
instance.get('/login',{
    timeout:1000
})

配置方式的优先级:axios全局配置 < axios实例配置 < axios请求配置

3.2 拦截器

  • 请求拦截器
// 添加请求拦截器
axios.interceptors.request.use(function (config) {

  // 在发送请求之前做些什么
  
  return config;
}, function (error) {

  // 对请求错误做些什么
  
  return Promise.reject(error);
});
  • 响应拦截器
// 添加响应拦截器
axios.interceptors.response.use(function (response) {

  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  
  return response;
}, function (error) {

  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  
  return Promise.reject(error);
});
  • 移除拦截器
// 添加请求拦截器
const myInterceptor = axios.interceptors.request.use(function () {/*...*/});

// 移除请求拦截器
axios.interceptors.request.eject(myInterceptor)
  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
二次封装axios是指在axios的基础上进行进一步的封装,以便于在项目中更方便地使用。下面我会详细解释一下二次封装axios的步骤和好处。 1. 创建封装文件:首先,你可以创建一个自定义的封装文件,比如"api.js",用于封装axios请求。 2. 导入axios:在封装文件中,首先需要导入axios库,可以使用npm或者直接引入cdn。 3. 创建实例:接下来,可以创建一个axios实例,通过axios.create()方法来创建。这样可以定义一些默认的配置,如请求的基本URL、请求头等。 4. 设置拦截器:在创建实例后,可以使用interceptors拦截器来对请求和响应进行处理。拦截器可以在请求发送前和响应返回后对数据进行处理,比如添加公共的请求头、处理错误信息等。 5. 封装请求方法:接下来,可以根据项目需要封装不同的请求方法,如get、post等。在封装这些方法时,可以使用创建的axios实例来发送请求,并对返回的数据进行处理。 6. 导出封装后的方法:最后,在封装文件中导出这些封装后的方法,以便在项目中使用。 好处: - 代码复用性增强:通过二次封装axios,可以将一些公共的配置和处理逻辑抽离出来,减少代码的重复编写。 - 统一管理请求:将所有的请求集中在一个文件中,便于统一管理和维护,提高代码的可读性和可维护性。 - 易于扩展和修改:在封装文件中,可以根据项目需求进行自定义配置和处理,方便后续的扩展和修改。 - 方便错误处理:通过拦截器,可以对请求和响应进行全局的错误处理,比如统一处理网络错误、接口异常等情况。 总结: 二次封装axios可以提高代码的复用性和可维护性,方便统一管理请求和处理错误,同时也使得项目的扩展和修改更加灵活方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这河里吗l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值