0

私は。。をしようとしています

  1. パスを検証する
  2. パラメータの文字数に基づいて、クエリ文字列を追加できるはずです

例:- param char カウントが 4 未満の場合 - クエリ文字列を追加すると 404 が返されます

ただし、param char カウントが 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.ref()Joi は、呼び出しを介して別のパラメーターの長さにアクセスすることはできません。これを達成するための最善の策は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 に答える