Note/Node.js

hapi joi - javascript validation library 자바스크립트 유효성검사 라이브러리

Delia :D 2022. 11. 23. 17:50

back-end 에서도, front-end 에서도, ECMAScript 를 사용하고 있는 당신,  유효성 검사 할때는 joi 하라!

Joi 는 한마디로 말해서 유효성검사 모듈이다.

가장 쉬운 에로 노드서버에서 get, post, put, delete 등 라우터를 호출할때 함께 전송되는 파라미터값들을 검증할 때 사용한다거나, 

쿼리 실행 전에 넘어온 값들을 검증한다거나 할 때 유용하게 사용할 수 있다.

https://joi.dev/

 

joiSite

## Build Setup

joi.dev

hapi/joi 였었는데 독립했나보네.

엔티티별로 정의해 놓으면 매우 편리하다. 예를 들어 유저에 관한 정보를 정의해놓고 체크한다던지 하는..

공식 웹사이트에서 예제를 가져와 봤다.

const Joi = require('joi');

const schema = Joi.object({
    username: Joi.string()
        .alphanum()
        .min(3)
        .max(30)
        .required(),

    password: Joi.string()
        .pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')),

    repeat_password: Joi.ref('password'),

    access_token: [
        Joi.string(),
        Joi.number()
    ],

    birth_year: Joi.number()
        .integer()
        .min(1900)
        .max(2013),

    email: Joi.string()
        .email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } })
})
    .with('username', 'birth_year')
    .xor('password', 'access_token')
    .with('password', 'repeat_password');


schema.validate({ username: 'abc', birth_year: 1994 });
// -> { value: { username: 'abc', birth_year: 1994 } }

schema.validate({});
// -> { value: {}, error: '"username" is required' }

// Also -

try {
    const value = await schema.validateAsync({ username: 'abc', birth_year: 1994 });
}
catch (err) { }