다음은 책 리액트를 다루는 기술을 읽고 공부한 내용을 바탕으로 작성된 글입니다.
클라이언트가 잘못된 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 오류가 뜨는 것을 확인하였다.
'Front-End > React' 카테고리의 다른 글
[React] 블로그 만들기 5 - 페이지네이션 구현 (0) | 2022.03.14 |
---|---|
[React] 블로그 만들기 4 - Request Body 검증 (0) | 2022.03.14 |
[React] 블로그 만들기 2 - 데이터 생성, 조회, 삭제, 수정 기능 구현 (0) | 2022.03.14 |
[React] 블로그 만들기 1 - MongoDB를 이용하여 스키마, 모델 만들기 (0) | 2022.03.11 |
[React] Koa를 이용한 개발 / 라우터 모듈화 / 컨트롤러 파일 모듈화 (0) | 2022.03.09 |