코딩에서 유효성 검사라는 것이 존재한다 유효성 검사란 내가 서버에게 전달하는 데이터에 여러 제약조건을 걸어 해당 조건들을 모두 충족한 경우에만 서버로 전달한다는 의미이다. 그 중에 joi라이브러리를 사용하여 유효성 검사를 진행하는 방식을 알아보겠다.
일단 조이라이브러리를 다운하는 방법은
npm i Joi
터미널에 이러한 명령어로 조이 라이브러리를 사용할 수 있다.
조이라이브러리를 사용하는 간단한 코드를 먼저 살펴보겠다.
// 조이 라이브러리를 사용합니다.
import Joi from 'joi';
// ../../constants/message.constant.js에 선언되어 있는 메시지 값을 가져와서 사용합니다.
import { MESSAGES } from '../../constants/message.constant.js';
// 이력서 최소 길이를 ./resume.constant.js'에서 값을 가져옵니다.
import { MIN_RESUME_LENGTH } from '../../constants/resume.constant.js';
//조이 라이브러리를 사용해서 타이틀과 컨탠츠 부분의 유효성 검사를 진행합니다.
const schema = Joi.object({
title: Joi.string(),
content: Joi.string().min(MIN_RESUME_LENGTH).messages({
'string.min': MESSAGES.RESUMES.COMMON.CONTENT.MIN_LENGTH,
}),
})
.min(1)
.messages({
'object.min': MESSAGES.RESUMES.UPDATE.NO_BODY_DATA,
});
// 이력서 수정 유효성 검사 함수로 지정합니다.
export const updateResumeValidator = async (req, res, next) => {
try {
//조이 라이브러리로 만든 스키마 유효성 감사를 req.body 값으로 받는 부분을 확인합니다
await schema.validateAsync(req.body);
next();
} catch (error) {
next(error);
}
};
여기서 schema를 선언하여 조이 오브젝트를 생성하게 된다. 생성된 오브젝트 안에는 내가 입력할 부분
즉 위의 코드에서는 title,과 content 가 된다
해당 부분들에 이제 조건을 할당하게 되는데 string()은 문자열이어야 한다는 조건이고,.min은 문자의 최소길이 .message는 만약 조건에 실패하였다면 어떠한 메시지를 응답하는지 작성하게 된다.
-----------------------------------
코드는 여기까지 보도록하고 이제 joi라이브러리를 왜 유효성 검사 패키지로 사용하여야 하는가에 대하여 알아보겠다.
Joi 라이브러리는 JavaScript에서 데이터 유효성 검사를 수행할 때 매우 유용한 도구다. 유효성 검사는 주로 사용자가 입력한 데이터가 올바른 형식과 값을 가지고 있는지 확인하는 과정으로, 웹 애플리케이션에서 중요하다. Joi는 이러한 유효성 검사 작업을 효율적이고 간단하게 처리할 수 있도록 돕는다.
Joi 라이브러리로 유효성 검사를 하는 이유는 다음과 같다:
- 명확한 데이터 구조 정의:
Joi는 스키마 기반의 유효성 검사를 제공한다. 개발자는 입력 데이터가 가져야 할 정확한 구조(예: 문자열, 숫자, 배열 등)를 정의할 수 있다. 이로 인해 데이터를 명확하게 정의하고 검증할 수 있다. - 다양한 검증 기능 제공:
Joi는 다양한 데이터 타입에 대해 검증을 할 수 있는 메서드를 제공한다. 예를 들어, 문자열의 길이, 숫자의 범위, 이메일 형식, 날짜 범위 등 여러 가지 조건을 검증할 수 있다. 기본적으로 제공되는 검증 기능들이 매우 풍부해서 복잡한 검증을 간단히 처리할 수 있다. - 체이닝을 통한 직관적인 사용:
Joi는 체이닝(Chaining) 방식으로 조건을 이어서 작성할 수 있어 코드가 직관적이고 가독성이 좋다. 예를 들어, 여러 조건을 하나의 객체 내에서 손쉽게 조합하여 검증할 수 있다. - 비즈니스 로직에서의 검증 수행:
웹 애플리케이션에서는 서버로 전달되는 데이터의 유효성 검사를 통해 예상치 못한 오류나 보안 문제를 방지할 수 있다. Joi는 서버 측에서 클라이언트가 보낸 데이터를 검증하는 데 유용하며, 이를 통해 비즈니스 로직에서 발생할 수 있는 오류를 미리 예방할 수 있다. - 확장성:
Joi는 유효성 검사를 위한 다양한 메서드와 옵션을 제공하며, 커스터마이징이 용이하다. 예를 들어, 기존의 규칙을 기반으로 사용자 정의 검증 로직을 추가할 수 있기 때문에 애플리케이션에 맞는 맞춤형 검증을 구현할 수 있다. - 예외 처리 용이:
Joi는 유효성 검사 결과를 error 객체로 반환하여, 검증이 실패한 이유를 쉽게 알 수 있다. 이를 통해 사용자가 잘못된 데이터를 입력했을 때, 정확한 오류 메시지를 제공하고 적절한 피드백을 제공할 수 있다. - 정규 표현식보다 더 유연하고 안전함:
기존의 JavaScript에서 정규 표현식을 사용하여 유효성 검사를 하는 것보다, Joi는 더 직관적이고 안전한 방법을 제공한다. Joi의 검증 메서드는 내부적으로 데이터 타입과 값의 유효성을 체계적으로 체크해주므로 오류 가능성을 줄일 수 있다.
이러한 이유들로 가능하다면 Joi라이브러리를 활용하여 유효성 검사를 하면서 코드를 작성하는게 개발자로서 배워야할 마음가짐이 아닌가 싶다.
'내일배움캠프 TIL' 카테고리의 다른 글
CPU의 기본이해 본캠프 TIL 01/13 (0) | 2025.01.13 |
---|---|
업장 CRUD 완성 및 3계층 아키텍쳐 형식으로 분할 - 본캠프 TIL 01/10 (0) | 2025.01.10 |
OSI 7계층에서 네트워크 계층 본캠프 TIL 01/08 (0) | 2025.01.08 |
Layered Architecture Pattern 이란? 본캠프 TIL 01/07 (0) | 2025.01.07 |
프로젝트 SA 작성 본캠프 TIL 01/06 (1) | 2025.01.06 |