본문 바로가기

Nest.js5

[좌충우돌 산악회 홈페이지 만들기 #6] Nest.js Transaction 처리 * 정보제공용 글이 아닌 개인 개발 일지 작성용입니다. 비판 환영! 1. 서론 개발하면서 우리는 다양한 오류를 마주한다. 통상적으로 트랜잭션은 하나의 작업 단위를 말하며, 특정 비즈니스 로직은 하나의 트랜잭션을 갖는다고 할 수 있다. 만일, DB 내의 여러 테이블에 Insert를 하는 로직이 있다고 가정해보자. 중간에 로직을 처리하는 도중 예상치 못한 오류가 발생한다면? 당연히 해당 로직이 지금까지 수행했던 모든 Insert 작업들을 Rollback시켜야한다. 데이터 무결성을 유지하기 위해서다. 이렇게 무결성을 지키기 위해 수행하는 로직 처리를 트랜잭션 처리라고 한다. 따라서 이번 시간에는 TypeORM을 활용해서 트랜잭션을 처리하는 방법에 대해서 구현을 해봐야겠다. 이번에는 공식 도큐먼트를 참조하려고 .. 2022. 4. 19.
[좌충우돌 산악회 홈페이지 만들기 #5] Nest.js에 Swagger OpenAPI 붙이기 * 정보제공용 글이 아닌 개발 일지입니다! 비판 환영 1. 서론 원래는 Transaction을 먼저 하려고 했는데, Swagger는 금방 하니까 빠르게 하고 그 다음에 해야겠다. API를 개발하다보면 클라이언트에게 어떤 API가 만들어졌고 뭘 쓰면 되고, Request, Response는 이렇게 오고, 상태코드는 무엇들이 있고 등등 일일이 말로 설명하기 매우 번거로워진다. 그러자니 Postman 등을 활용해서 API 문서를 직접 만들기에도 상당한 시간도 걸리고, 실수할 여지도 있고, 추후 API가 변경되면 이를 수정해줘야하는 불편함이 있다. 이러한 불편함을 한번에 해결해줄 수 있는 고마운 존재가 있는데, 바로 Swagger OpenAPI이다. 오늘도 역시 공식 도큐먼트의 힘을 빌린다. Documentat.. 2022. 4. 19.
[좌충우돌 산악회 홈페이지 만들기 #4] Nest.js에서 Exception Filter 만들기 * 정보 제공용 글이 아닌 개인 개발 일지 작성용입니다~ 비판 환영 1. 서론 이번에 만들어볼건 Nest.js에서 Exception Filter이다. 지난 시간에는 Response Interceptor를 구현해서 언제 일정한 Response를 두었는데, Exception Filter의 경우 내가 발생시키는 HttpException를 캐치해서 내가 원하는 Response로 정제해서 클라이언트 측에 제공할 수 있다. 그냥 throw new HttpException() 으로 날려버리면 Response는 이쁘게 떨어지는데 왜 이걸 만드냐! 하면 이유는 간단하다. 내가 Exception Layer를 직접 제어하고 싶기 때문이다! 일단 생각나는건 Response에 success 키를 붙이고, data 키를 붙이려고.. 2022. 4. 17.
[좌충우돌 산악회 홈페이지 만들기 #3] 공통 Response를 만들어보자 * 정보 제공용이 아닌 개인 개발 기록용입니다! 비판 환영 1. 서론 지난 시간에는 Nest.js에서 TypeORM와 DB 연동, 그리고 실제 동작 여부를 확인하기 위한 예제 Controller 및 Service, Entity와 Repository 주입까지 해보고 실제 DB에 Insert와 Select까지 해보았다! 다 괜찮은데, 공통 Response가 있으면 좋겠다는 생각을 했다. 기존 Response는 DB에서 조회한 내용을 단순히 JSON 형태로 리턴하는 형태이다. 그런데 이런 데이터를 data라는 키로 따로 묶고, success 여부와 상태코드, 메세지를 공통 Response로 요청하면 훨씬 깔끔해보일 것 같다. 가령, 다음과 같은 형식이다. { success: true, statusCode: 2.. 2022. 4. 17.