为了账号安全,请及时绑定邮箱和手机立即绑定

axios拦截器拦截所有axios请求

axios拦截器拦截所有axios请求

MMMHUHU 2023-07-06 15:30:29
我使用了 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实例用于未经身份验证的请求。


查看完整回答
反对 回复 2023-07-06
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信