Redux Toolkit中如何在prepareHeaders方法内获取当前请求URL
fetchBaseQuery 传入的 prepareHeaders 回调实际支持第二个上下文参数,你可以从该参数中直接获取当前请求的 url,修改后的代码如下:
export const gatewayApi = createApi({ reducerPath: 'gatewayApi', tagTypes: [ 'Country', 'Users', ], baseQuery: fetchBaseQuery({ baseUrl: '/api/', // 新增第二个参数获取请求上下文信息 prepareHeaders: (headers, { url }) => { headers.set('content-type', 'application/json'); const { auth } = JSON.parse( localStorage.getItem('user') || '{}', ); const { accessToken } = JSON.parse( localStorage.getItem('token') || '{}', ); // 直接从上下文取当前请求的url const queryUrl = url; if (isTokenAuth(queryUrl)) { headers.set('authorization', `${accessToken}`); } else if (auth) { headers.set('authorization', `${auth}`); } return headers; }, }), endpoints: () => ({}), });
第二个上下文参数除了url之外,还包含method(请求方法)、endpoint(当前请求对应的endpoint名称)、extra(调用接口时传入的额外自定义参数),可根据需求按需取用。
内容的提问来源于stack exchange,提问作者HasanG
相关产品推荐
相关产品推荐

