我需要在hapijs应用程序中设置自定义HTTP状态消息。怎么做到这一点?我的代码是:
'use strict';
const Hapi = require('hapi');
const server = new Hapi.Server();
server.connection({ port: 3000, host: 'localhost' });
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
reply('Hello, world!\n')
.header('set-cookie', 'abc=123')
.message("Hello world");
}
});
server.start((err) => {
if (err) {
throw err;
}
console.log(`Server running at: ${server.info.uri}`);
});
当我通过卷曲这样称呼它时:
curl -v http://localhost:3000/
我看到了自定义的http标头abc=123
,但http状态消息仍然是OK
而不是预期的Hello world
。请帮忙。
感谢。
答案 0 :(得分:2)
这是一个错误,并且有一个开放的pull request来修复它。 我可以确认我能够使用Hapi 16.5(来自主人)重现您的问题,并且在应用拉取请求后它可以正常工作。
如果您现在需要它并且不能等待拉取请求被接受,您可以按照我测试它的步骤进行操作:
$ rm -r node_modules/hapi
$ git clone https://github.com/hapijs/hapi.git node_modules/hapi
然后修改node_modules/hapi/.git/config
,以便[remote "origin"]
块看起来如下:
[remote "origin"]
url = https://github.com/hapijs/hapi.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
(添加第三行)
$ cd node_modules/hapi
$ git fetch origin
$ git checkout pr/3560
// optional if you don't want a nested git repo in your project
$ rm -r .git
现在您的自定义状态消息应该有效:)