axios拦截器拦截所有axios请求

我使用了 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拦截器。


MMMHUHU
浏览 149回答 1
1回答

PIPIONE

拥有拦截器是否意味着所有 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 interceptormyOtherApiClient.post("", initiative, config) // no interceptor on this one您还可以将默认axios实例用于未经身份验证的请求。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript