将错误响应拦截器放在 redux-axios-middleware 上

Posted

技术标签:

【中文标题】将错误响应拦截器放在 redux-axios-middleware 上【英文标题】:Put error response interceptor on redux-axios-middleware 【发布时间】:2017-09-17 23:39:42 【问题描述】:

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);
    ;

但仍然没有显示任何内容。

有什么办法吗?

【问题讨论】:

【参考方案1】:

这是一个使用 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()

【讨论】:

以上是关于将错误响应拦截器放在 redux-axios-middleware 上的主要内容,如果未能解决你的问题,请参考以下文章

前端401错误 & 解决方法:响应拦截器

避免在每个请求中使用 Axios 在 Vue 中响应错误时进行处理

Angular 拦截器中的响应标头

delphi拦截错误提示

颤振中用于处理错误的graphql拦截器

axios请求/响应拦截