小编zir*_*zir的帖子

Hapijs和Joi:使用在线验证查询参数:'forbidden'

我的目标是为帖子创建索引路径.用户应该能够指定一些查询参数(即标签,类型),但不能指定其他参数.澄清:

这没关系:

/posts
/posts?tags=food
/posts?type=regular&tags=stackoverflow
Run Code Online (Sandbox Code Playgroud)

这不行:

/posts?title=Hello
Run Code Online (Sandbox Code Playgroud)

这是hapi pack配置:

servers: [
        {
            host: 'localhost',
            port: 3000,
            options: {
                labels: ["api"],
                validation: {
                    abortEarly: false,
                    presence: 'forbidden'
                }
            }
        }
    ],
Run Code Online (Sandbox Code Playgroud)

请注意该presence: forbidden选项.

这是路由配置:

handler: function (request, reply) {
    Post.find(request.query, function (err, posts) {
        if(err) {
            console.log(err);
        }

        reply(posts);
    });
},
validate: {
    query: {
        type: Joi.string().optional(),
        tags: Joi.string().optional()
    }

}
Run Code Online (Sandbox Code Playgroud)

我的想法是验证应该允许typetagsparams的任何子集(包括空查询).但是,在进行任何允许的请求后,我收到以下错误:

{
    "statusCode": 400,
    "error": "Bad Request",
    "message": "value is not allowed", …
Run Code Online (Sandbox Code Playgroud)

javascript node.js hapijs joi

7
推荐指数
1
解决办法
7878
查看次数

标签 统计

hapijs ×1

javascript ×1

joi ×1

node.js ×1