ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서버에서 Validation & Sanitization 수행하기
    Project/트윗 클론코딩 2023. 9. 24. 20:06
    반응형

    클라이언트 측에서 요청에 담긴 값을 

    스키마에 맞게 올바르게 담겨왔는지 검사하는 단계이다

    만약 누락되거나 기준을 만족하지 못한다면 적절한 메세지를 클라이언트에 보내는 방식인데

     

    우리가 DB와 통신하거나 서버에서 동작하는 시간단위 전부가 비용이기 때문에

    적절하지 않은 데이터가 들어왔을 때 즉각적으로 처리해주는 게 좋다

     

    클라이언트에서 validation을 통해 올바른 값을 서버에 전달하는 것도 좋지만

    지금 클라이언트 측 validation은 optional한 상태이기에 서버단에서 validation을 수행하는 코드를 추가했다.

     

    그리고 sanitization은 한국어로 번역하면 소독인데 양식은 맞게 들어왔으나 대소문자가 틀리다던지

    그런 데이터들을 스키마에 맞게 적절하게 처리한 후 DB에 저장하거나 쓰는 작업을 말한다.

     

    이 두가지 모두 필수이다!

     

    import express from "express";
    import {
      deleteTweet,
      getTweet,
      getTweetById,
      postTweet,
      updateTweet,
    } from "../controller/tweetController";
    import { body, param } from "express-validator";
    
    const router = express.Router();
    
    router.get("/", getTweet);
    
    router.get("/:id", [param("id").trim()], getTweetById);
    
    router.post(
      "/",
      [
        body("name")
          .trim()
          .notEmpty()
          .withMessage("이름을 확인해주세요")
          .isString()
          .withMessage("이름은 문자만 가능합니다"),
        body("username")
          .trim()
          .toLowerCase()
          .notEmpty()
          .withMessage("이름을 확인해주세요"),
        body("text")
          .trim()
          .isLength({ min: 2, max: 500 })
          .withMessage("최소 2글자 이상 입력해야 합니다"),
      ],
      postTweet
    );
    
    router.put(
      "/:id",
      [
        body("text")
          .trim()
          .isEmpty()
          .withMessage("수정할 내용을 입력해주세요")
          .isLength({ min: 2, max: 500 })
          .withMessage("최소 2글자 이상 입력해야 합니다"),
      ],
      updateTweet
    );
    
    router.delete("/:id", [param("id").trim()], deleteTweet);
    
    export default router;

    Router쪽에서 express-validation 라이브러리로 처리를 해주었는데

    body에 담겨오는 내용을 검사하고 적절한 메세지를 보내주었다.

     

    강의에서는 내가 처리한 부분과 또 어떻게 추가적으로 validation을 수행했는지 적어보겠다

    반응형

    'Project > 트윗 클론코딩' 카테고리의 다른 글

    Authentication 최종 정리  (0) 2023.10.02
    Authentication 구축하기  (0) 2023.09.30
    서버 아키텍쳐 구축하기  (0) 2023.09.23
    REST API 서버 구축하기  (0) 2023.09.22
    REST API 디자인하기  (0) 2023.09.19

    댓글

Designed by Tistory.