使用 Joi 进行路由验证(参数和查询)
Route Validation using Joi (Param and Query)
我正在尝试
- 验证路径
- 根据参数的字符数,我应该可以附加查询字符串
例如:- 如果参数字符计数小于 4 - 并且添加查询字符串应该 return a 404
但是如果参数字符数等于 4 - 并且添加查询字符串应该 return a 200
所以基本上只有当参数的字符数等于 4 时才允许查询字符串,否则不允许。
我不确定确切的方法,但我想我可以使用 Join.object().keys()。有人可以指导我吗?
谢谢
{
path: '/something/{param}/{slash*}',
method: 'GET',
config: {
handler: Controller.method,
validate: {
params: {
filter : Joi.string().regex(/^[A-Za-z]{0,4}$/).required(),
slashes : Joi.string().regex(/^\/*$/)
},
query: {
page: Joi.number().default(1)
}
}
}
},
仅靠 Joi 无法做到这一点。 Joi 无法通过 Joi.ref()
调用访问另一个参数的长度。完成此操作的最佳选择是通过您的处理程序发送 404
:
{
path: '/something/{param}/{slash*}',
method: 'GET',
config: {
handler: function (request, reply) {
if (request.params.param.length !== 4 && request.query.page)
return reply(Boom.notFound())
Controller.method.call(this, request, reply)
},
validate: {
params: {
filter : Joi.string().regex(/^[A-Za-z]{0,4}$/).required(),
slashes : Joi.string().regex(/^\/*$/)
},
query: {
page: Joi.number().default(1)
}
}
}
}
我正在尝试
- 验证路径
- 根据参数的字符数,我应该可以附加查询字符串
例如:- 如果参数字符计数小于 4 - 并且添加查询字符串应该 return a 404
但是如果参数字符数等于 4 - 并且添加查询字符串应该 return a 200
所以基本上只有当参数的字符数等于 4 时才允许查询字符串,否则不允许。
我不确定确切的方法,但我想我可以使用 Join.object().keys()。有人可以指导我吗?
谢谢
{
path: '/something/{param}/{slash*}',
method: 'GET',
config: {
handler: Controller.method,
validate: {
params: {
filter : Joi.string().regex(/^[A-Za-z]{0,4}$/).required(),
slashes : Joi.string().regex(/^\/*$/)
},
query: {
page: Joi.number().default(1)
}
}
}
},
仅靠 Joi 无法做到这一点。 Joi 无法通过 Joi.ref()
调用访问另一个参数的长度。完成此操作的最佳选择是通过您的处理程序发送 404
:
{
path: '/something/{param}/{slash*}',
method: 'GET',
config: {
handler: function (request, reply) {
if (request.params.param.length !== 4 && request.query.page)
return reply(Boom.notFound())
Controller.method.call(this, request, reply)
},
validate: {
params: {
filter : Joi.string().regex(/^[A-Za-z]{0,4}$/).required(),
slashes : Joi.string().regex(/^\/*$/)
},
query: {
page: Joi.number().default(1)
}
}
}
}