如何向 hapi 服务器在路由中发送的每种响应发送自定义 header
how to send an custom header to each kind of response the hapi server sends in a route
我想发送一个特定于路线的自定义 header
问题是我的路由处理程序如下:
function(req,reply){
if(req.file) req.file.on('error', reply);
else {
if(cond1) reply('OK');
else if(cond2) reply({obj:obj2});
else if(cond3) reply(boom.badRequest('Ohhh.. Something wrong'));
else .. // so many conditions.
}
}
我只想设置该自定义 header 一次,而不是每次我执行一个条件时。
我该怎么做?
在 hapi 文档中,我只能找到通过链接或详细信息发送 header 的方法。两者都不适合这种情况。因为我将不得不在代码中一次又一次地写同样的东西。
制作通用功能还可以,但我想要更简单的东西。
像这样 reply.setHeaderForAllResponseInThisRoute(myHeaderName, value);
如果 value
不是错误,调用 reply(value)
会给你一个 response
对象。如果这是一个错误,你会得到一个 Boom 对象。
响应对象有一个可链接的 header(key. value)
方法,您可以利用它来做您需要的事情:
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
var cond1 = ...;
var cond2 = ...;
var cond3 = ...;
var response;
if (cond1) {
// header only applied in this condition
response = reply(...).header('x-custom-header', 'custom');
} else if (cond2) {
response = reply(...);
} else if (cond3) {
response = reply(...);
} else {
response = reply(...);
}
// Headers applied to all responses except errors
if (!response.isBoom) {
response.header('x-header-1', 'value1')
.header('x-header-2', 'value2');
}
}
});
我想发送一个特定于路线的自定义 header
问题是我的路由处理程序如下:
function(req,reply){
if(req.file) req.file.on('error', reply);
else {
if(cond1) reply('OK');
else if(cond2) reply({obj:obj2});
else if(cond3) reply(boom.badRequest('Ohhh.. Something wrong'));
else .. // so many conditions.
}
}
我只想设置该自定义 header 一次,而不是每次我执行一个条件时。
我该怎么做? 在 hapi 文档中,我只能找到通过链接或详细信息发送 header 的方法。两者都不适合这种情况。因为我将不得不在代码中一次又一次地写同样的东西。
制作通用功能还可以,但我想要更简单的东西。
像这样 reply.setHeaderForAllResponseInThisRoute(myHeaderName, value);
如果 value
不是错误,调用 reply(value)
会给你一个 response
对象。如果这是一个错误,你会得到一个 Boom 对象。
响应对象有一个可链接的 header(key. value)
方法,您可以利用它来做您需要的事情:
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
var cond1 = ...;
var cond2 = ...;
var cond3 = ...;
var response;
if (cond1) {
// header only applied in this condition
response = reply(...).header('x-custom-header', 'custom');
} else if (cond2) {
response = reply(...);
} else if (cond3) {
response = reply(...);
} else {
response = reply(...);
}
// Headers applied to all responses except errors
if (!response.isBoom) {
response.header('x-header-1', 'value1')
.header('x-header-2', 'value2');
}
}
});