StrongLoop Loopback:如何自定义HTTP响应代码和标头

时间:2015-03-20 14:56:40

标签: http-headers http-status-codes loopbackjs strongloop

我正在寻找一种方法来自定义StrongLoop LoopBack HTTP响应代码和标题。

我想遵守有关REST API的一些公司业务规则。

对于JSON中描述的模型,典型的情况是让HTTP响应POST请求,使用代码201 +标头Content-Location(而不是没有Content-Location标头的loopback的默认响应代码200)。

使用LoopBack可以做到吗?

1 个答案:

答案 0 :(得分:5)

不幸的是,这样做的方法有点困难,因为LoopBack不容易有钩子来修改来自API的所有响应。相反,您需要在引导脚本中为每个模型添加一些代码,这些代码使用afterRemote方法挂钩:

/server/boot/内添加一个文件(名称并不重要):

module.exports = function(app) {

  function modifyResponse(ctx, model, next) {
    var status = ctx.res.statusCode;
    if (status && status === 200) {
      status = 201;
    }
    ctx.res.set('Content-Location', 'the internet');
    ctx.res.status(status).end();
  }

  app.models.ModelOne.afterRemote('**', modifyResponse);
  app.models.ModelTwo.afterRemote('**', modifyResponse);
};