【问题标题】:Optional rout patterns in hapihapi 中的可选路由模式
【发布时间】:2015-06-15 13:40:46
【问题描述】:
http://hapijs.com/tutorials/routing
我在这里没有看到可选标记的示例。
虽然我看到了诸如:"/home/token/{value?}" 之类的示例,但我没有看到可行的方法:"/home/optionalToken/{optionalValue?}/optionalOtherToken/{optionalOtherValue?}"
有没有办法以更复杂的模式声明路径的可选部分?
具体来说,我希望能够声明:"/{contentType}/page/{pageNumber?}/limit/{limitNumber?}" 其中page、pageNumber、limit、limitNumber 都是路径的可选部分。
【问题讨论】:
标签:
routes
optional-parameters
hapijs
【解决方案1】:
hapi文档有这个sn-p的文字,表示不可能:
可选的“?”参数名称后面的后缀表示可选参数(仅当参数位于路径末尾或仅覆盖部分段时才允许,如 '/a{param?}/b')。
但是,您可以通过使用不同路径多次注册相同的路径来获得相同的最终结果。示例:
var routeOptions = {
method: "GET",
handler: function(request, reply) {
if (request.params.limitNumber) {
...
}
if (request.params.pageNumber) {
...
}
reply(...);
}
};
var routes = [
Hoek.applyToDefaults(routeOptions, {
path: "/{contentType}"
}),
Hoek.applyToDefaults(routeOptions, {
path: "/{contentType}/page/{pageNumber?}"
}),
Hoek.applyToDefaults(routeOptions, {
path: "/{contentType}/page/{pageNumber}/limit/{limitNumber?}"
})
];
server.route(routes);