Lewis's Tech Keep
[Programmers] [2기] 실무와 가까워지는 Node.js 백엔드 개발 - 2주차 정리 본문
Typescript/Typescript 스터디
[Programmers] [2기] 실무와 가까워지는 Node.js 백엔드 개발 - 2주차 정리
Lewis Seo 2021. 11. 7. 23:232주차
최근 스터디를 우연히 두 개를 진행하게 되었다. (본인도 이렇게 될 줄은 꿈에도 몰랐다.)
노트를 남기지 않으면 개념이 섞일 것 같아 두려워서
PR을 TODO-LIST 형태로 정리하고 있었는데 스터디 영상을 리뷰 중에 글로 남겨보라는 코멘트가 있어서 남기려고 한다.
2주차에는 프로젝트의 메서드 정리 및 개선, 기본적인 router 이용 및 validation 진행이었다.
개요 및 주요 내용
DONE-LIST
- request 메서드(GET, POST, PUT)별 함수 분리
- validate request parameter 하나로 합치기
- validate exist doc (doc 존재 확인)
- validate correct owner (현재 doc owner 와 userId 가 같은 지)
- firebase get, update 메서드 분리
- validate token 메서드 분리
1. 메서드별 function을 만들어 분리 (handleEventsGet, Put, Post)
export default async function handle(req: NextApiRequest, res: NextApiResponse): Promise<void> {
/* ... */
switch (method) {
case 'GET':
handleEventsGet(req, res);
break;
case 'PUT':
handleEventsPut(req, res);
break;
default:
res.status(405).end('알 수 없는 메서드입니다.');
break;
}
}
2. validate Parameter 부분을 하나로 합침
export function validateEventsRequest<T>(
paramObj: any,
schema: JSONSchema6,
res: NextApiResponse,
): IValidateResponse<T> {
// 검증
/* ... */
}
3. validate exist doc 메서드를 합침
function validateExistDoc(
doc: FirebaseFirestore.DocumentSnapshot<FirebaseFirestore.DocumentData>,
res: NextApiResponse,
) {
/* ... */
}
4. validate correct onwer 메서드를 통해 owner 와 userId를 확인
function validateCorrectOwner(ownerId: string, userId: string, res: NextApiResponse) {
/* ... */
}
5. getDoc, updateDoc, addDoc firebase이벤트 메서드로 분리
async function getDocFromEventsByEventId(eventId: string) {
/* ... */
}
async function updateDocFromEvents(eventInfo: IEvent, body: any, eventId: string) {
/* ... */
}
async function addDocFromEvents(addData: Omit<IEvent, 'id'>) {
/* ... */
}
느낀점
- API Route에 대해서 다루어 볼 수 있어서 좋았다.
switch를 통해 get, post, put 과 같은 메서드들을 나눔
참고링크 API Routes, Router Method Switch - ajv를 쓰면 json 유효성 검증할 때 얼마나 편하게 쓸 수 있는지 알 수 있었다.
json 유효성이 맞지 않을 때 에러를 보내준다. (라이브러리에서)
참고링크 AJV란 - event client model 에 FirebaseAdmin을 받아서 global하게 메서드를 다루어 보려고 했는데 실패했다.
시간 여유가 난다면 연구가 필요할듯 - addData 시에 필요없는 속성을 제거하는 Omit 타입은 정말 신기하고 획기적이었다.
참고링크 Omit 타입 - nextjs를 처음 써 봤는데 run dev 시에 컴파일 속도가 엄청 빨라서 놀랐다.
'Typescript > Typescript 스터디' 카테고리의 다른 글
[Programmers] [2기] 실무와 가까워지는 Node.js 백엔드 개발 - 4주차 정리 (0) | 2021.11.13 |
---|---|
[Programmers] [2기] 실무와 가까워지는 Node.js 백엔드 개발 - 3주차 정리 (0) | 2021.11.07 |