在 hapi 处理程序中,我尝试在代码的前面设置响应的标头,然后再发回视图。
reply().header('cache-control', 'no-cache');
{....}
reply.view('myView', myContext);
我必须使用该hold
方法吗?在这种情况下,如何在渲染视图时重用响应?
谢谢你的帮助。
在 hapi 处理程序中,我尝试在代码的前面设置响应的标头,然后再发回视图。
reply().header('cache-control', 'no-cache');
{....}
reply.view('myView', myContext);
我必须使用该hold
方法吗?在这种情况下,如何在渲染视图时重用响应?
谢谢你的帮助。
/**************** 自 HAPI V.17 以来的重大变化 ****************/
自 hapi v.17 以来的重大更改 真正的重大更改大多数代码和库以及 api 已更改,并且 prev 样板或指南无济于事。所以你需要寻找带有 hapi v.17 标记的新文章
api页面:https ://hapijs.com/api#response-toolkit
首先reply()
是无效的,你应该使用reply.response()
第二在新指南中,它的参数reply
发生了变化,h
因此可以命名为任何名称,但指南正在使用h
,因此您也可以使用 h 。
第三,hold()
没有定义好,也不需要。
第四,send()
我认为不需要甚至没有定义。
以及其他一些变化。请检查上面的 api 链接。
所以这是我写的代码的一部分应该提供一些很好的信息。不关心整个功能只看 h 和响应部分
static _json_response(res, request = null, h = null){
let ret = '';
ret = JSON.stringify(res);
if (request == null || h == null){
return ret;
}else{
const response = h.response(ret)
.header('cache-control', 'no-cache')
.type('application/json')
return response;
}
}
为当前在 hapi 6.6.0 中测试的每个响应设置标头
server.ext('onPreResponse', function(request, reply) {
request.response.header('X-API-VERSION', '0.0.1');
reply();
});
可以使用hold方法如下
reply.hold();
reply.view('your-view');
甚至
reply.view('your-view').hold();
reply.send();
回复一直保留到您调用 .send() 方法,因此:
reply().header('cache-control', 'no-cache').hold();
...
reply().send();
可能是您正在寻找的。
好的,这就是我所做的(不确定这是最好的解决方案):
var response;
{...}
response = reply().header('cache-control', 'no-cache').hold();
{...}
response = response || reply.view('summary', summary).hold();
response.send();
这样可行
你应该可以使用
var response = request.view('myView', myContext).header('cache-control: no-cache').hold();
// other stuff
response.send();