首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >制作API处理程序包装器以减少重复

制作API处理程序包装器以减少重复
EN

Stack Overflow用户
提问于 2020-10-26 02:43:03
回答 2查看 464关注 0票数 0

现在,要调用私有端点,我需要将此代码复制到每个组件。这是混乱的,不可持续的,容易出错的。我如何将此行为包装在函数调用中,并将其放在我想要的实用程序的位置?这样我就可以import { ApiUtil } from ..ApiUtil.post('/user', user)

代码语言:javascript
运行
复制
import axios from 'axios'; 
import { useAuth0 } from '../../../react-auth0-spa'; 
    const authContext = useAuth0();
    const {
        getTokenSilently
    } = authContext; 
    const token = await getTokenSilently(); 
    await axios({
        method: 'post',
        headers: {
           Authorization: `Bearer ${token}`,
        },
        url: '/user',
        data: user,
    });
EN

回答 2

Stack Overflow用户

发布于 2020-10-26 02:46:25

您可以创建一个axios实例,并可在每个组件中重用

代码语言:javascript
运行
复制
import axios from 'axios';

//token code sample

const instance = axios.create({
    baseURL: API_URL,
    headers: { Authorization: `Bearer ${token}` }
});

export default instance;
票数 2
EN

Stack Overflow用户

发布于 2020-10-26 02:49:52

您可以创建一个新文件并导出an instance of axios

代码语言:javascript
运行
复制
// ApiUtil.js
import axios from 'axios'; 
import { useAuth0 } from '../../../react-auth0-spa'; 

const authContext = useAuth0();
const { getTokenSilently } = authContext; 
const token = await getTokenSilently(); 

export default axios.create({
  headers: {
    Authorization: `Bearer ${token}`,
  },
});

然后,您可以这样使用它:

代码语言:javascript
运行
复制
import ApiUtil from './ApiUtil';

// …
await ApiUtil.post('/user', { user });
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64527450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档