[React] 블로그 만들기 3 - 요청 검증 (id 검증)

2022. 3. 14. 14:49·공부하기/React

다음은 책 리액트를 다루는 기술을 읽고 공부한 내용을 바탕으로 작성된 글입니다.


 

클라이언트가 잘못된 id를 전달했다면 400 Bad Request 오류를 띄워주는 것이 올바르다.

현재로서는 올바르지 않은 형식의 id가 전달되면 500 오류가 발생한다. 요청 검증을 통해 400 오류가 뜰 수 있도록 바꿔보자 !


mongoose에서 id 값이 올바른 ObjectId 인지 확인하는 방법은 다음과 같다.

import mongoose from 'mongoose';

const { ObjectId } = mongoose.Types;
ObjectId.isValid(id);

여기서 id는 검증하고자 하는 id이다.

 

현재  ObjectId를 검증해야 하는 API는 read, remove, update이다.

이 세 함수에 검증 코드를 중복하여 넣지 않고, 한 번만 구현한 다음 라우트에서 쉽게 적용하는 방법이 있다.

바로 미들웨어를 만드는 것이다.

기존 코드 상단에 미들웨어를 작성한다.

 

 

- src/api/posts/posts.ctrl.js

import Post from '../../models/post';
import mongoose from 'mongoose';

const { ObjesctId } = mongoose.Types;

export const checkObjectId = (ctx, next) => {
  const { id } = ctx.params;
  if (!ObjesctId.isValid(id)) {
    ctx.status = 400; // Bad Request
    return;
  }
  return next();
};

...

 

그 다음, ObjectId 검증이 필요한 함수의 라우트 함수에 이 미들웨어를 추가한다.

 

 

- src/api/posts/index.js

posts.get('/', postsCtrl.list);
posts.post('/', postsCtrl.write);
posts.get('/:id', postsCtrl.checkObjectId, postsCtrl.read);
posts.delete('/:id', postsCtrl.checkObjectId, postsCtrl.remove);
posts.patch('/:id', postsCtrl.checkObjectId, postsCtrl.update);

 

 

 

-Postman

 

요청 검증 테스팅

 

 

존재하지 않는 'aaaa'  id로 GET 요청을 보낸 결과, 성공적으로 Bad Request 오류가 뜨는 것을 확인하였다.

저작자표시 (새창열림)

'공부하기 > React' 카테고리의 다른 글

[React] 블로그 만들기 5 - 페이지네이션 구현  (0) 2022.03.14
[React] 블로그 만들기 4 - Request Body 검증  (0) 2022.03.14
[React] 블로그 만들기 2 - 데이터 생성, 조회, 삭제, 수정 기능 구현  (0) 2022.03.14
[React] 블로그 만들기 1 - MongoDB를 이용하여 스키마, 모델 만들기  (1) 2022.03.11
[React] Koa를 이용한 개발 / 라우터 모듈화 / 컨트롤러 파일 모듈화  (3) 2022.03.09
'공부하기/React' 카테고리의 다른 글
  • [React] 블로그 만들기 5 - 페이지네이션 구현
  • [React] 블로그 만들기 4 - Request Body 검증
  • [React] 블로그 만들기 2 - 데이터 생성, 조회, 삭제, 수정 기능 구현
  • [React] 블로그 만들기 1 - MongoDB를 이용하여 스키마, 모델 만들기
다섯자두
다섯자두
All I need is 💻 , ☕️ and a dash of luck
  • 다섯자두
    subbni
    다섯자두
  • 전체
    오늘
    어제
    • 전체 글 (88) N
      • 개발 이야기 (0)
      • 만들어보기 (17)
        • FromBookToBook (5)
        • Spring (5)
        • Node.js & React (3)
        • TroubleShooting (4)
      • 공부하기 (71) N
        • Network (3)
        • Cloud (1)
        • Database (5)
        • Java (13)
        • Javascript (0)
        • Spring (9)
        • React (18)
        • Algorithm (8)
        • 자료구조 (7)
        • ETC (7) N
      • 회고 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • velog
  • 공지사항

  • 인기 글

  • 태그

    pdf 자동 다운로드
    알고리즘
    재시도 로직
    aws
    프로젝트
    JPA
    pdf 프리뷰 실패
    Database
    SQS
    Til
    최단거리
    network
    outbox
    로그인
    알림 기능
    SSE
    자료구조
    springboot
    실시간 데이터 전송 기술
    outbox 패턴
    Express
    java
    HTTP
    티스토리챌린지
    오블완
    Spring
    SQL
    redis
    mysql
    서명알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
다섯자두
[React] 블로그 만들기 3 - 요청 검증 (id 검증)
상단으로

티스토리툴바