这是我尝试使用hapi v17时发生的。
这是我的终点
{
method: 'GET',
path: '/admin/pagetypes',
handler: Handlers.index,
config: {
description: 'get page types',
tags: ['api'],
auth: {
strategy: 'standard',
scope: 'admin'
},
validate : {
params : {
p: Joi.number().default(0),
message: Joi.string().empty(''),
filter: Joi.string().empty(''),
keyword: Joi.string().empty(''),
by: Joi.string().empty(''),
field: Joi.string().empty('')
}
}
}
},
启动我的hapi服务器时,它会显示
{AssertionError [ERR_ASSERTION]:如果没有路径参数,则无法设置路径参数验证:GET / admin / pagetypes 在新的module.exports.internals.Route(/Users/computer/Documents/proj/api/node_modules/hapi/lib/route.js:128:14)
试图删除验证并运行,但这不是我想要的
答案 0 :(得分:0)
您正在尝试验证路径参数,但是您的路径定义中没有参数。
此处:path: '/admin/pagetypes',
我认为您正在尝试验证将添加到您的路径中的查询参数,例如:/admin/pagetypes?p=1&message=Hello
等。
如果是,请尝试此操作。这将验证您的查询参数。
{
method: 'GET',
path: '/admin/pagetypes',
handler: Handlers.index,
config: {
description: 'get page types',
tags: ['api'],
auth: {
strategy: 'standard',
scope: 'admin'
},
validate : {
query : {
p: Joi.number().default(0),
message: Joi.string().empty(''),
filter: Joi.string().empty(''),
keyword: Joi.string().empty(''),
by: Joi.string().empty(''),
field: Joi.string().empty('')
}
}
}
},
要验证路径参数,您需要为路径定义添加一些动态值,例如
path: '/admin/pagetypes/{pageId}',
pageId 这是一个路径参数,您可以使用
validate.params
来验证该参数。