我使用了 Axios 拦截器来拦截我的 Axios 登录请求。但它也被其他 axios 请求使用。拥有拦截器是否意味着所有 axios 请求都会使用它?如果是,我如何仅将其用于特定请求。在这种情况下,我的登录请求? Axios.interceptors.response.use(res => { // console.log(`complete response ---> ${JSON.stringify(res)}`) // console.log(`This is the login response----> ${JSON.stringify(res.headers)}`) const authorization = res.headers.authorization; console.log(`Entering login`); const bearerToken = authorization.substring(7, authorization.length); const userLoginResponse: LoginResponse = { httpStatus: res.status, token: bearerToken, user: { . . . } } this.authParams = { . . . . } //console.log(`This is the userLoginResponse ---->${JSON.stringify(userLoginResponse)}`) this.setObject(); resolve(userLoginResponse) return res; }, (error) => { console.log(`This is the error status ---> ${error.response.status}`) if (error.response.status === 401) { resolve(error.response); } }) await Axios.post(loginAPIURL, params, config);这是另一个 axios 请求: const submitAPIURL = process.env.REACT_APP_API_ADD_INITIATIVE_URL || ""; axios.post(submitAPIURL, initiative, config).then(submitRes =>{ resolve(submitRes.headers) }).catch(error => { reject(error); }) });但是上述请求也调用了登录axios请求的axios拦截器。
1 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
拥有拦截器是否意味着所有 axios 请求都会使用它?
是的
我如何仅将其用于特定请求?
我建议为每种用途创建单独的 Axios 实例。
例如
const myAuthenticatedApiClient = axios.create({
baseURL: process.env.REACT_APP_API_WHATEVER_URL
})
const myOtherApiClient = axios.create({
baseURL: process.env.REACT_APP_API_ADD_INITIATIVE_URL
})
myAuthenticatedApiClient.interceptors.response.use(res => {
// whatever
})
myAuthenticatedApiClient.post(...) // will use the interceptor
myOtherApiClient.post("", initiative, config) // no interceptor on this one
您还可以将默认axios实例用于未经身份验证的请求。
添加回答
举报
0/150
提交
取消