有没有办法为错误响应代码设置全局 axios 配置
Is there a way to set global axios config for error response codes
我在我的 react/redux 应用程序中使用 axios
,当我遇到 401、404 等错误时,我目前必须在调用公理。我有一个 axios_config.js ,其中我用一些常见的习语包装了 axios 调用。例如:
// need to move this to app config
const BASE_URL = 'http://localhost:8080/api/';
function config() {
return {
headers: {'X-Token-Auth': localStorage.getItem('token')}
}
}
export function fetchData(url) {
return axios.get(`${BASE_URL}${url}`, config());
};
我遇到的问题是 401、404 等常见错误。目前,我正在这样做:
export function fetchBrands() {
return function(dispatch) {
dispatch({type:FETCHING_BRANDS});
fetchData('brands')
.then(response => {
dispatch({
type: FETCH_BRANDS_SUCCESS,
payload: response
});
})
.catch(err => {
// deal with errors
});
}
}
但在 catch
块中,我不想每次都必须处理 401、404 等。所以我需要能够在更全球化的范围内处理这些问题,但仍然能够处理请求的特定错误,例如服务器端验证错误。
您可以尝试编写一个接受函数的函数,并且 returns 函数带有一个 catch。您甚至可以传递一个可选的辅助参数来执行本地捕获逻辑。
然后可以将其移动到一个文件中,您可以随时修改它。
export function fetchBrand(id) {
return function (dispatch) {
wrapCatch(
fetchData(`brands/${id}`)
.then(response => {
dispatch({
type: FETCH_BRAND_SUCCESS,
payload: response
});
}),
function (err) {
// deal with errors
}
);
}
}
export function wrapCatch(f, localErrors) {
return f.catch(err => {
// deal with errors
localErrors();
});
}
希望对您有所帮助。
您可以将响应拦截器用作 axios documentation 中的文档。
axios.interceptors.response.use(undefined, function (error) {
if(error.response.status === 401) {
ipcRenderer.send('response-unauthenticated');
return Promise.reject(error);
}
});
other thread with same discussion
我在我的 react/redux 应用程序中使用 axios
,当我遇到 401、404 等错误时,我目前必须在调用公理。我有一个 axios_config.js ,其中我用一些常见的习语包装了 axios 调用。例如:
// need to move this to app config
const BASE_URL = 'http://localhost:8080/api/';
function config() {
return {
headers: {'X-Token-Auth': localStorage.getItem('token')}
}
}
export function fetchData(url) {
return axios.get(`${BASE_URL}${url}`, config());
};
我遇到的问题是 401、404 等常见错误。目前,我正在这样做:
export function fetchBrands() {
return function(dispatch) {
dispatch({type:FETCHING_BRANDS});
fetchData('brands')
.then(response => {
dispatch({
type: FETCH_BRANDS_SUCCESS,
payload: response
});
})
.catch(err => {
// deal with errors
});
}
}
但在 catch
块中,我不想每次都必须处理 401、404 等。所以我需要能够在更全球化的范围内处理这些问题,但仍然能够处理请求的特定错误,例如服务器端验证错误。
您可以尝试编写一个接受函数的函数,并且 returns 函数带有一个 catch。您甚至可以传递一个可选的辅助参数来执行本地捕获逻辑。
然后可以将其移动到一个文件中,您可以随时修改它。
export function fetchBrand(id) {
return function (dispatch) {
wrapCatch(
fetchData(`brands/${id}`)
.then(response => {
dispatch({
type: FETCH_BRAND_SUCCESS,
payload: response
});
}),
function (err) {
// deal with errors
}
);
}
}
export function wrapCatch(f, localErrors) {
return f.catch(err => {
// deal with errors
localErrors();
});
}
希望对您有所帮助。
您可以将响应拦截器用作 axios documentation 中的文档。
axios.interceptors.response.use(undefined, function (error) {
if(error.response.status === 401) {
ipcRenderer.send('response-unauthenticated');
return Promise.reject(error);
}
});
other thread with same discussion