一看就会,nodejs + express统一接口返回格式

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

在Node.js和Express中,可以通过中间件来统一API接口的返回格式。中间件可以拦截所有的响应并格式化它们,确保一致性。以下是一个简单的例子,展示了如何实现这样的中间件:

首先,你可以定义一个响应格式化的函数,例如:

function responseFormatter(req, res, next) {
  // 保存原始的res.send
  const originalSend = res.send;

  // 重写res.send
  res.send = function (data) {
    // 格式化响应数据
    let responseData = {
      success: true,
      data: data,
    };

    // 如果data是Error类型,则认为是失败的响应
    if (data instanceof Error) {
      responseData = {
        success: false,
        error: {
          message: data.message,
          ...(process.env.NODE_ENV === 'development' && { stack: data.stack }), // 在开发环境下返回错误栈
        },
      };
    }

    // 调用原始的res.send方法
    originalSend.call(this, responseData);
  };

  next();
}

然后,在你的Express应用中使用这个中间件:

const express = require('express');
const app = express();

// 使用responseFormatter中间件
app.use(responseFormatter);

// 定义路由
app.get('/api/some-endpoint', (req, res) => {
  res.send({ message: 'This is a successful response!' });
});

app.get('/api/some-error', (req, res) => {
  res.send(new Error('Something went wrong'));
});

// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

在上面的例子中,responseFormatter中间件会拦截所有通过res.send发送的响应,并将其包装在一个统一的格式中。如果发送的是一个错误对象,它会改变响应的结构来表示失败的请求。

请注意,这只是一个基本的实现。在实际的应用中,你可能需要根据具体的业务逻辑来调整这个中间件的行为,例如处理不同类型的错误或者添加更多的响应信息。此外,对于错误处理,你可能还想要添加一个专门的错误处理中间件来捕获和格式化错误响应。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值