0

我在尝试着

  1. 验证路径
  2. 根据参数的字符数,我应该能够附加一个查询字符串

例如:- 如果参数字符数小于 4 - 添加查询字符串应返回 404

但是如果参数字符数等于 4 - 并且添加查询字符串应该返回 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)
               }
           }
       }
   },
4

1 回答 1

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)
           }
       }
   }

}

于 2016-03-16T16:13:02.780 回答