将NodeJS用于我们的API,如何控制从Hapi发送的HTTP状态代码?

时间:2016-11-04 16:09:43

标签: hapijs

我们正在使用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凌驾于早先的建议之上。

0 个答案:

没有答案