我们正在使用Hapi作为简单的API。我们有自己的auth系统,所以如果用户调用我们的API,但他们没有经过身份验证,我想发回401 HTTP状态代码。
我看到这篇文章:
https://futurestud.io/tutorials/hapi-how-to-set-response-status-code
提供了这个例子:
handler: function (request, reply) {
var data = { key: 'value' }
reply(data).code(201)
}
所以我开始添加响应代码,包括我们的异常代码:
DB.knex.raw(query).then(function(result) {
var dataJson = [];
var responseJson = {};
for(var i in result[0]) {
dataJson.push({
"name": result[0][i]["name"],
"profile_id": result[0][i]["profile_id"],
"profile_type": result[0][i]["profile_type"],
"profile_classification": result[0][i]["profile_classification"],
"permalink": result[0][i]["permalink"],
"location": result[0][i]["location"],
});
}
responseJson["data"] = dataJson;
reply(responseJson).code(200);
})
.catch(function(e) {
console.error(e);
reply(e).code(500);
});
但我立刻得到了这个错误:
TypeError: query.then(...).catch(...).code is not a function
所以...我想我不能这样做。我对错误感到困惑,因为我没有打电话给" .code()"在" catch",我在回复()上调用它。
我们正在使用Boom,是否会覆盖文章中的建议?文章讨论了Boom,但没有说明Boom凌驾于早先的建议之上。