hapi.js如何使用joi验证器

在hapi.js中,可以使用Joi模块来进行数据验证。Joi是一个Node.js模块,用于验证和转换JavaScript对象。它支持各种数据类型、结构和规则的验证,并提供了易于使用和灵活的API。

以下是一个使用Joi进行验证的示例:

const Hapi = require('@hapi/hapi');
const Joi = require('joi');

const server = Hapi.server({
    port: 3000,
    host: 'localhost'
});

const validationSchema = Joi.object({
    username: Joi.string().alphanum().min(3).max(30).required(),
    password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')),
    email: Joi.string().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } })
});

server.route({
    method: 'POST',
    path: '/register',
    options: {
        validate: {
            payload: validationSchema
        }
    },
    handler: (request, h) => {
        // Handle request...
        return 'User registered successfully';
    }
});

server.start();

在上述示例中,我们定义了一个Joi验证schema,并将其作为hapi.js路由选项中的payload验证器使用。当客户端发送POST请求到”/register”路由时,hapi.js将首先验证请求的payload是否符合我们定义的schema,如果验证失败,则返回400 Bad Request响应。如果验证通过,则调用路由处理函数来处理请求。

需要注意的是,在上述示例中,我们将Joi验证schema定义为一个独立的变量,这样可以方便地重用它。此外,hapi.js的Joi验证器也支持其他类型的验证,比如params验证和query验证,具体用法与上述示例类似。

评论

发表回复