nodejs + express 接口统一返回错误信息

API对接平台一键对接ChatGPT3.5/4.0,Claude3,文心一言等AI模型,无需翻墙,国外信用卡👉AI模型聚合API-海鲸AI

在Node.js和Express框架中,你可以通过中间件(middleware)来统一处理错误。通常,你会在所有路由处理器之后添加一个错误处理中间件,这样任何从路由中抛出的错误都会被这个中间件捕获并处理。

以下是一个简单的示例,展示了如何在Express应用中统一处理错误:

  1. 定义一个错误处理中间件
// 错误处理中间件应该有四个参数:错误对象、请求对象、响应对象和next函数
app.use((err, req, res, next) => {
  console.error(err.stack); // 打印错误堆栈信息(仅用于开发环境)

  // 设置响应状态码
  res.status(err.status || 500);

  // 发送错误响应
  res.json({
    error: {
      message: err.message || '发生了一个错误。'
    }
  });
});
  1. 在路由中抛出错误

在你的路由处理器中,如果遇到错误情况,你可以抛出错误:

app.get('/some-route', (req, res, next) => {
  try {
    // ... 你的逻辑代码 ...
    if (someErrorCondition) {
      throw new Error('这里有一个错误');
    }
    res.send('正常响应');
  } catch (error) {
    // 传递错误到下一个中间件(即错误处理中间件)
    next(error);
  }
});

或者,如果你的路由处理器是异步的,你可以使用async/await并将错误传递给next()

app.get('/some-route', async (req, res, next) => {
  try {
    // ... 你的逻辑代码 ...
  } catch (error) {
    // 传递错误到下一个中间件(即错误处理中间件)
    next(error);
  }
});

如果你使用的是异步中间件(比如数据库操作),你可能需要一个额外的包如express-async-handler来自动传递异步代码中的错误到错误处理中间件。

  1. 确保错误处理中间件是最后添加的中间件

错误处理中间件应该在所有其他app.use()和路由调用之后添加,这样它才能捕获整个应用中发生的任何错误。

// 其他路由和中间件
// ...

// 最后添加错误处理中间件
app.use((err, req, res, next) => {
  // 错误处理逻辑
});

通过这种方式,你可以确保应用中的任何错误都会以一致的格式返回给客户端。记得在生产环境中不要泄露敏感的错误堆栈信息。

相关推荐

  1. nodejs + express 接口统一返回错误信息

    2024-05-14 17:06:06       36 阅读
  2. 鸿蒙Arkts上传图片并获取接口返回信息

    2024-05-14 17:06:06       36 阅读
  3. 统一返回响应

    2024-05-14 17:06:06       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 17:06:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 17:06:06       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 17:06:06       82 阅读
  4. Python语言-面向对象

    2024-05-14 17:06:06       91 阅读

热门阅读

  1. Auto.js如何打包成APK文件

    2024-05-14 17:06:06       126 阅读
  2. C++ primer plus 第五章编程练习

    2024-05-14 17:06:06       101 阅读
  3. 面试集中营—Linux篇

    2024-05-14 17:06:06       38 阅读
  4. 比特币能否跨过量子时代的这道槛?

    2024-05-14 17:06:06       31 阅读
  5. 【Python】Python中的logging模块介绍和示例

    2024-05-14 17:06:06       36 阅读
  6. 【FFmpeg】调用FFmpeg和SDL2进行解码后渲染播放

    2024-05-14 17:06:06       36 阅读
  7. 申请免费的Let‘s Encrypt 通配符 HTTPS 证书

    2024-05-14 17:06:06       35 阅读
  8. Python实战开发及案例分析(21)—— 广度优先

    2024-05-14 17:06:06       31 阅读
  9. Python数独游戏

    2024-05-14 17:06:06       36 阅读
  10. 【Python系列-01学习路线-01基础】03变量

    2024-05-14 17:06:06       60 阅读
  11. yarn 命令(防止遗忘)

    2024-05-14 17:06:06       31 阅读
  12. 深入理解 MySQL 视图

    2024-05-14 17:06:06       33 阅读