我正在寻找一种方法来自定义StrongLoop LoopBack HTTP响应代码和标题。
我想遵守有关REST API的一些公司业务规则。
对于JSON中描述的模型,典型的情况是让HTTP响应POST请求,使用代码201 +标头Content-Location(而不是没有Content-Location标头的loopback的默认响应代码200)。
使用LoopBack可以做到吗?
答案 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);
};