VueJS - 长时间运行的 API 调用的拦截器

时间:2021-05-15 16:19:23

标签: vue.js axios

我正在使用 vuejs 和 axios 从外部 API 获取信息。

当我发送 POST 请求时,这个 API 需要一个拦截器来发送一个身份验证令牌。

我创建了一个包含以下代码的 API.js 文件:

import axios from 'axios';
import Vue from 'vue'

const instance = axios.create({
    baseURL: 'http://localhost:8004/'
})

instance.interceptors.request.use((config) => {
    const token = Vue.prototype.$keycloak.token;
    if (token) {
        config.headers.Authorization = `Bearer ${token}`
    }
    return config
}, (err) => {
    return Promise.reject(err)
})

export default instance

当我发送请求时一切正常:

import API from '../api'
API.post(/intents/)

到目前为止一切顺利。然而,这个请求是一个长时间运行的调用,这意味着:

  1. 客户端应用程序发送一个 HTTP 请求来触发一个 长时间运行的操作 - 这通常仅限于 执行某种状态更新的操作,即 POST 或 PUT 请求

  2. 响应将返回 HTTP 202 Accepted 状态,表示 请求已排队等待处理

  3. 响应还将包含一个位置 HTTP 标头,指定 状态端点的 URI

  4. 客户端应用程序将轮询状态端点以检索 操作状态(等待、运行、成功、失败等)。

  5. 一旦操作完成,状态端点通常会 返回另一个位置 HTTP 标头,指定的 URI 结果资源(即已创建/更新的资源)

  6. 客户端应用程序向此 URI 发出请求以检索 资源

在这种情况下,我需要在 Axios 拦截器/助手函数中添加 This Code,以便任何发出 HTTP 请求的代码都会自动执行上述步骤。

我应该在哪里包含这个代码?在同一个文件 API.js 上?

0 个答案:

没有答案
相关问题