Axios 简单使用

title: Axios 简单使用 id: 7a7f6f276a77785d44f2461a6f0bebd6 tags: [] date: 2000/01/01 00:00:00 updated: 2023/03/04 19:29:12 isPublic: true --#|[分隔]|#--

Axios 简单使用

Axios 支持浏览器和服务端进行 ajax 请求。

Axios中文文档

基础使用

基本的 Axios 使用,和 jquery 差不多。

安装:

npm install -S axios

以下几个语法,都能发出请求,且返回值为一个 Promise:

import Axios from 'axios'

(async () => {
  let res = await Axios(url[, config])
  let res = await Axios.request(config)
  let res = await Axios.get(url[, config])
  let res = await Axios.delete(url[, config])
  let res = await Axios.head(url[, config])
  let res = await Axios.options(url[, config])
  let res = await Axios.post(url[, data[, config]])
  let res = await Axios.put(url[, data[, config]])
  let res = await Axios.patch(url[, data[, config]])
})()

且可以为 Axios 添加一些全局的默认配置,一次执行,即使在其他文件中再使用 Axios,也同样生效:

后面这个 config 的配置项很多,常用的添加参数、添加消息体等常用选项,都在其中配置:

创建服务+请求拦截

可以全局创建一个 Axios 服务,对这个服务初始化一些统一的配置和统一的拦截。

创建和配置服务

如代码示例,分三个部分:

  • Axios.create:创建请求服务

  • service.interceptors.request.use:请求前的拦截

  • service.interceptors.response.use:响应后的拦截

request.js 中:

默认情况,网站与接口同域,则调用接口时自带携带 cookie,如果网站与接口不是同一域名,则不携带。

但当非同一域名时,仍然想携带 cookie,需把配置项 withCredentials 设置为 true,同时后台的响应头需要做一些处理:

  • Access-Control-Allow-Credentials 值要为 true

  • Access-Control-Allow-Origin 和 Access-Control-Allow-Headers 值不能为 *,需要代码具体指定。

以下为 node 的服务端设置响应头的代码:

使用创建的服务定义接口们

api.js 文件中:

其他页面使用接口

某个页面:

可以在 API 中自定义配置

有一些特殊接口,当它出错时,我们不希望它和其他接口一样,弹出统一提示,而且希望偷摸去做一些其他事。

可以在写 api 时,写入一些参数:

api.js 文件中:

request.js 中:

以下能拿到数据,自然就能自己根据判断,去做一些其他处理。

Axios停止接口调用

无论是Vue还是React,使用了Axios后,在某些时候,需要停止已经发出、正在pedding等待响应的接口,比如在跳页时。

下面就是Vue在跳页时紧急停止axios接口调用的方法,React同理。

但虽说前端停止了接口调用,但如果后台已经处理完了这个接口的数据和操作,那还是无法撤回的。

Last updated

Was this helpful?