拦截器在ReactJS中的工作不如预期

huangapple go评论66阅读模式
英文:

Interceptor with reactjs not works as expected

问题

我正在尝试在 API 请求上实现全局级别的预加载程序。我刚刚尝试了一个示例,但没有起作用。如何全局实现拦截器?

import axios from 'axios';

export default async (searchTerms) => {
  try {
    const url = `${process.env.SERVICE_URL}/get-jayachan-detais`;
    const params = JSON.stringify({
      orderInfoRequest: {
        searchType: 'MASTER TRX',
        MasterTrxnId: searchTerms.ordnum
      }
    });
    const response = await axios.post(url, params, { withCredentials: true });

    return {
      errors: [],
      response
    };
  } catch (e) {
    return {
      errors: [e]
    };
  }
};

axios.interceptors.request.use(function () {
    console.log('start preloader');
});

axios.interceptors.response.use(function () {
    console.log('stop preloader');
});

以上是你提供的代码。

英文:

I am trying to implement a global level preloader on api request. I just tried it with sample. but not works. how to implement the interceptor globally?

import axios from 'axios';

export default async (searchTerms) => {
  try {
    const url = `${process.env.SERVICE_URL}/get-jayachan-detais`;
    const params = JSON.stringify({
      orderInfoRequest: {
        searchType: 'MASTER TRX',
        MasterTrxnId: searchTerms.ordnum
      }
    });
    const response = await axios.post(url, params, { withCredentials: true });

    return {
      errors: [],
      response
    };
  } catch (e) {
    return {
      errors: [e]
    };
  }
};

axios.interceptors.request.use(function () {
    console.log('start preloader');
});

axios.interceptors.response.use(function () {
    console.log('stop preloader');
});

答案1

得分: 5

在请求拦截器中返回config对象,在响应拦截器中返回响应数据/错误:

import axios from 'axios';

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    console.log('开始加载动画');
    return config;
}, function (error) {
    console.error('错误:请求拦截器:', error);
    return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    console.log('停止加载动画');
    return response;
}, function (error) {
    console.error('错误:响应拦截器:', error);
    return Promise.reject(error);
});

export default async (searchTerms) => {
    try {
        const url = `${process.env.SERVICE_URL}/get-jayachan-details`;
        const params = {
            orderInfoRequest: {
                searchType: 'MASTER TRX',
                MasterTrxnId: searchTerms.ordnum
            }
        };
        const response = await axios.post(url, params, { withCredentials: true });

        return {
            errors: [],
            response: response.data // 返回响应数据
        };
    } catch (e) {
        return {
            errors: [e]
        };
    }
};

此外,假设如果你收到错误响应,它将帮助你进行故障排除和调试。

英文:

Return the config object in the request interceptor and the response data/err in the response interceptor:

import axios from 'axios';

// Add a request interceptor
axios.interceptors.request.use(function (config) {
    console.log('start preloader');
    return config;
}, function (error) {
    console.error('Error: request interceptor:', error);
    return Promise.reject(error);
});

// Add a response interceptor
axios.interceptors.response.use(function (response) {
    console.log('stop preloader');
    return response;
}, function (error) {
    console.error('Error: response interceptor:', error);
    return Promise.reject(error);
});

export default async (searchTerms) => {
    try {
        const url = `${process.env.SERVICE_URL}/get-jayachan-details`;
        const params = {
            orderInfoRequest: {
                searchType: 'MASTER TRX',
                MasterTrxnId: searchTerms.ordnum
            }
        };
        const response = await axios.post(url, params, { withCredentials: true });

        return {
            errors: [],
            response: response.data // Return response data
        };
    } catch (e) {
        return {
            errors: [e]
        };
    }
};

Additionally, suppose if you get error response, it will help you to troubleshoot and debug the issue well.

huangapple
  • 本文由 发表于 2023年8月9日 15:02:27
  • 转载请务必保留本文链接:https://go.coder-hub.com/76865334.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定