티스토리 뷰
Js 유효성 검증을 위한 라이브러리
Joi는 여러 타입과 규칙을 이용해 유효성을 검증할 수 있으며, 유효성 검증에 실패하면 오류를 발생시킵니다.
Joi는 클라이언트가 요청한 정보들이 서버로 전달될 떄, 알맞은 형식인지 아닌지 검증하는 작업이 필요하게 되는데 그 때
유효성 검증 작업을 효과적으로 더쉽고 간결하게 작성하 처리할 수 있게 됩니다.
Nest.js프레임 워크에서는 Pipe라는 이름으로 불리기도 합니다.
Joi패키지 설치
# yarn을 이용해 Joi를 설치합니다.
yarn add joi
Joi를 이용한 문자열 길이 검증하기
// app.js
const Joi = require('joi');
// Joi 스키마를 정의합니다.
const schema = Joi.object({
// name Key는 문자열 타입이고, 필수로 존재해야합니다.
// 문자열은 최소 3글자, 최대 30글자로 정의합니다.
name: Joi.string().min(3).max(30).required(),
});
// 검증할 데이터를 정의합니다.
const user = { name: 'Foo Bar' };
// schema를 이용해 user 데이터를 검증합니다.
const validation = schema.validate(user);
// 검증 결과값 중 error가 존재한다면 에러 메시지를 출력합니다.
if (validation.error) {
console.log(validation.error.message);
} else {
// 검증 결과값 중 error가 존재하지 않는다면, 데이터가 유효하다는 메시지를 출력합니다.
console.log('Valid Data!');
}
직접 확인하기 위해 node app.js로 실행시켜보면
유효한 데이터로 빠져서 나온다.하지만 조건을 맞추지 못한다면 조건에 맞지 않는 이유가 나오는걸 확인할 수 있다.
Joi를 이용한 이메일 검증하기
const Joi = require('joi');
// Joi 스키마를 정의합니다.
const schema = Joi.object({
// name Key는 문자열 타입이고, 필수로 존재해야합니다.
// 문자열은 이메일 형식에 맞아야합니다.
email: Joi.string().email().required(),
});
// 검증할 데이터를 정의합니다.
const user = { email: 'foo@example.com' };
// schema를 이용해 user 데이터를 검증합니다.
const validation = schema.validate(user);
// 검증 결과값 중 error가 존재한다면 에러 메시지를 출력합니다.
if (validation.error) {
console.log(validation.error.message);
} else {
// 검증 결과값 중 error가 존재하지 않는다면, 데이터가 유효하다는 메시지를 출력합니다.
console.log('Valid Email User!');
}
이메일은 그냥 통과가 되지만
이메일이 아닌것을 입력하게 된다면
유효한 이메일이여야 한다는 문구가 나오는걸 볼수 있습니다.
비동기로 문자열 길이 검증하기
import Joi from 'joi';
// Joi 스키마를 정의합니다.
const schema = Joi.object({
// name Key는 문자열 타입이고, 필수로 존재해야합니다.
// 문자열은 최소 3글자, 최대 30글자로 정의합니다.
name: Joi.string().min(3).max(30).required(),
});
// 검증할 데이터를 정의합니다.
const user = { name: 'Foo Bar' };
try {
// schema를 이용해 user 데이터를 검증합니다.
const validation = await schema.validateAsync(user);
// 검증 결과값 중 error가 존재하지 않는다면, 데이터가 유효하다는 메시지를 출력합니다.
console.log('Valid Data!');
} catch (error) {
// 검증에 실패한다면, 에러 메시지를 출력합니다.
console.log(error.message);
}
try/catch 설정하기
서버에서 에러가 발생하게 된다면 클라이언트가 요청한 처리는 중단되며
이때 서버는 클라이언트에게 응답을 보내지 못하게 됩니다.
이를 방지하기 위해서는 발생 가능한 에러를 미리 대비하는 예외처리가 필요합니다.
try/catch문은 이러한 예외처리를 수행하는 역할을 하게 됩니다.
try블록에서는 에러가 발생하면 실행은 즉시 중단되고 catch블록이 실행됩니다.
try/catch 문에서, try 블록은 할 일을 생성하는 비즈니스 로직을 실행하고, catch 블록은 에러를 처리하도록 구현합니다.
에러처리가 필요한 이유
에러는 원하지 않았던 비즈니스 로직이 수행되지 않도록 하기 위해 사용합니다.
중복되어선 안되는 데이터에 다시 등록 요청이 들어오게 된다면, 데이터를 삽입하지 않아야합니다.
이 처럼 더이상 코드를 실행하지 않아야하는 경우에 에러를 발생시키게 됩니다.
에러는 우리가 예상치 못한 문제를 미리 방지하도록하여, 서버코드가 더욱 안정적으로 구성할 수 있는 효과를 얻게 됩니다.
'프로그래밍 기초 > Node.js' 카테고리의 다른 글
NODE의 Bcrypt [패스워드 안전하게 저장] (0) | 2024.02.15 |
---|---|
카카오 로그인 연동하기 (1) | 2024.02.05 |
미들웨어란? (0) | 2024.01.30 |
REST API구현하기 [할일 메모 사이트] (1) | 2024.01.29 |
Express.js의 req, res 객체 (0) | 2024.01.24 |