防止expressjs在响应中发送文本

时间:2014-07-11 13:45:46

标签: express

我正在使用expressjs为我的应用程序实现api调用。很多时候我不想在体内发回额外的数据,但是如果你没有指定一个正文,expressjs会在回复中发送http状态文本。

对于正文中的res.send(200);输出OKres.send(400);输出Not Found等等。

问题是我的UI期望格式良好的JSON或空体,并且裸字符串违反了这个约定。我现在找到的工作是发送res.send(200,{});发送一个空对象,但是对于每个api调用来说都是痛苦的。

有没有办法绕过快速回复这个空文本的空白文本?

1 个答案:

答案 0 :(得分:0)

如果不修改快速库本身,您可以创建一个扩展res.send功能的中间件函数。

您可以修改res.send,以便在仅使用状态代码调用时将空字符串添加到其参数中。这将阻止发送状态代码的名称。

app.use(function(req, res, next) {
  var send = res.send;
  res.send = function() {
    if (arguments.length == 1 && typeof arguments[0] == 'number') {
      arguments[arguments.length++] = '';
    }
    return send.apply(res, arguments);
  };
  next();
});

app.get('/good', function(req, res) {
  res.send(200);
});

app.get('/not-found', function(req, res) {
  res.send(404);
});