gpt4 book ai didi

reactjs - react如何在不同组件中使用axios实例?

转载 作者:行者123 更新时间:2023-12-05 00:55:21 26 4
gpt4 key购买 nike

我已经创建了一个 axios 实例:

const instance = axios.create({
baseURL: 'https://example.io/api/',
timeout: 1000
});

并且想在不同的组件上使用它。我的 webapp 使用 Keycloak 进行保护,每个发送到 API 的请求都需要一个身份验证 token 。为了获取 token ,我调用 Keycloak 方法如下:

    kc
.init({onLoad: "login-required"})
.then(authenticated => {
if (kc.idToken === undefined) {
return Promise.reject("Can not be authenticated")
}
return authenticated && root !== null ? start({authToken: kc.idToken}, root) : Promise.reject("Can not be authenticated")
})
.catch(console.log)

当我向 API 服务器发出请求时,我在请求 header 中将 token 作为 Bearer token 传递。为了避免在每个请求上传递 token ,我可以使用 intercepter对还是我该怎么办?

最佳答案

实现此目的的一种方法如下:

使用以下代码片段创建一个文件并将其命名为 httpService.js(选择您喜欢的名称)。

import axios from 'axios';    

// Add a request interceptor
axios.interceptors.request.use(
function (config) {
// Do something before request is sent
config.headers.Authorization = `Bearer ${your_token}`;
// OR config.headers.common['Authorization'] = `Bearer ${your_token}`;
config.baseURL = 'https://example.io/api/';

return config;
},
function (error) {
// Do something with request error
return Promise.reject(error);
}
);

export default {
get: axios.get,
post: axios.post,
put: axios.put,
delete: axios.delete,
patch: axios.patch
};

现在要在应用程序的其他部分使用它,添加这个导入:

import http from './httpService';

示例用法:

static getClient = (clientId) => {
return http.get('/clients/' + clientId);
};

baseUrlAuthorization header 将随每个请求自动配置。

关于reactjs - react如何在不同组件中使用axios实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64680277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com