【问题标题】:Error handling in Express after axios callaxios 调用后 Express 中的错误处理
【发布时间】:2020-03-13 18:19:00
【问题描述】:

我正在使用 express + axios 构建代理应用程序(第一次)。基本上,该应用所做的只是从 API 中检索一些数据,然后使用 express 发送响应。

async function getInfo() {
  try {
    const response = await axios.get(url);
    return response.data;
  } catch (error) {
    return error.response.data;
  }
}

const info = getInfo();

export default (req, res) => {
  return res.status(200).send(info);
};

如果 API 返回错误,我对如何处理错误有点困惑,作为 Express 的默认导出的一部分,我是否应该为每个错误代码设置条件?

【问题讨论】:

    标签: node.js express axios


    【解决方案1】:

    在您的代码中:

    const response = await axios.get(url);
    

    这里axios 将为您提供完整的 API 响应,在那里您可以获得状态代码和错误详细信息或成功等。但如果您不想在那里处理它,您也可以在调用函数的地方进行管理.

    如何处理Axios中的错误你可以查看here

    如果您打印 info 变量,它将返回一个承诺。只需使用.then(),如下所示:

    getInfo().then((result) => {
       //here the result will give you the error, success, status code etc.
    })
    

    在您的代码中,您可以尝试以下代码将响应发送到快递。

     export default async (req, res) => {
       async function getInfo() {
        try {
          await axios.get(url).then(function (response) {
    
                return response;
            }).catch(function (error) {
    
                return error;
            })
        } catch (error) {
          if (error.response) {
            return error.response
          } else if(error.request) {
            return error.request
          }
        }
       }
    
      return await getInfo().then((result) => {
        if(result.error) {
             res.status(result.error.status).send(result);
        } else {
             res.status(200).send(info);
        }
      })
    };
    

    【讨论】:

    • 谢谢,那么我该如何在 Express 中发送此回复?
    • 如果您遇到任何问题,请告诉我
    【解决方案2】:

    从 axios 返回错误,它应该包含所有相关信息,包括状态码和有关错误的详细信息(除非您想附加更多信息)

    【讨论】:

      猜你喜欢
      • 2020-05-13
      • 1970-01-01
      • 2018-10-02
      • 2014-02-04
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      相关资源
      最近更新 更多