将错误响应拦截器放在 redux-axios-middleware 上
Put error response interceptor on redux-axios-middleware
我对 https://github.com/svrcekmichal/redux-axios-middleware 有疑问。
我想设置拦截器响应(错误)。但是无法成功设置。
这是我的代码:
function interceptorResponse({ dispatch, getState, getAction }, response) {
console.log(response);
}
export const client = axios.create({
baseURL: API_URL,
headers: {
Accept: 'application/json',
},
});
export const clientOptions = {
interceptors: {
request: [interceptorRequest],
response: [interceptorResponse],
},
};
console.log(response)
仅在响应为 200
时才响应。如何设置它接受错误响应?
我试过这样设置
function interceptorResponse({ dispatch, getState, getAction }) {
return response => response.data, (error) => {
const meta = error.response.data.meta;
const { code, status } = meta;
console.log(meta);
};
}
但仍然没有显示任何内容。
有解决办法吗?
这里是一个使用 ES6 的例子:
import axios from 'axios'
import axiosMiddleware from 'redux-axios-middleware'
const options = {
// not required, but use-full configuration option
returnRejectedPromiseOnError: true,
interceptors: {
request: [
({ getState, dispatch }, config) => {
// Request interception
return config
}
],
response: [
{
success: ({ dispatch }, response) => {
// Response interception
return response
},
error: ({ dispatch }, error) => {
// Response Error Interception
return Promise.reject(error)
}
}
]
}
}
export default axiosMiddleware(axios, options)
注意创建的中间件要传给createStore()
我对 https://github.com/svrcekmichal/redux-axios-middleware 有疑问。
我想设置拦截器响应(错误)。但是无法成功设置。
这是我的代码:
function interceptorResponse({ dispatch, getState, getAction }, response) {
console.log(response);
}
export const client = axios.create({
baseURL: API_URL,
headers: {
Accept: 'application/json',
},
});
export const clientOptions = {
interceptors: {
request: [interceptorRequest],
response: [interceptorResponse],
},
};
console.log(response)
仅在响应为 200
时才响应。如何设置它接受错误响应?
我试过这样设置
function interceptorResponse({ dispatch, getState, getAction }) {
return response => response.data, (error) => {
const meta = error.response.data.meta;
const { code, status } = meta;
console.log(meta);
};
}
但仍然没有显示任何内容。
有解决办法吗?
这里是一个使用 ES6 的例子:
import axios from 'axios'
import axiosMiddleware from 'redux-axios-middleware'
const options = {
// not required, but use-full configuration option
returnRejectedPromiseOnError: true,
interceptors: {
request: [
({ getState, dispatch }, config) => {
// Request interception
return config
}
],
response: [
{
success: ({ dispatch }, response) => {
// Response interception
return response
},
error: ({ dispatch }, error) => {
// Response Error Interception
return Promise.reject(error)
}
}
]
}
}
export default axiosMiddleware(axios, options)
注意创建的中间件要传给createStore()