Express
[NodeJs, Express, Typescript] 전역 에러 핸들링 (express global error handle)
Nest는 @Catch(HttpException) 이런식으로 공식문서에서 쉽게 되어 있던데, Express는 뭔가 불편하다. 내가 여태껏 했던 것들은 API단위에서의 에러를 처리하고, 다음 공통된 에러 미들웨어에서 에러 레벨에 맞게 객체만들고, 클라쪽으로 넘겨서 처리하는 방식이 많았는데, 그렇게 했던 이유는 실력 부족도 있고, 결국은 이게 모든 에러를 다 컨트롤 한다고 잘못된 생각을 했다. 전역에서 에러를 관리하면 더 좋다는 피드백을 들었다. 그전에는 morgan, winston, slack으로 로깅을 할 때도 api단위에서의 에러를 로깅했었다. error.filter.ts import { Request, Response, NextFunction } from 'express'; class AppError..
[NodeJs, GraphQL, Apollo, Express, Prisma, TypeScript] Setting
GraphQL을 검색 서버에서 활용해보고 싶었다. 앱 내에 다양한 검색들이 있었는데, 검색 부분에서 restApi보단, endpoint를 동일하게하고, 프론트에서 원하는 데이터만 축출해가는 디자인 패턴이 더 효율적이라 생각했기 때문이다. 일단 프로젝트 배포전 임의로 셋팅 해봤다. app.ts import express from 'express'; import bodyParser from 'body-parser'; import cors from 'cors'; import apolloServer from './apollo/apolloserver'; import 'dotenv/config'; const main = async () => { const app = express(); app.use(express...
[Node.js] Express-typescript 전환
8개 서버에서 2개는 js, 6개는 ts를 사용했는데, 유지보수가 하기가 굉장히 불편하다. 그래서 시간이 좀 남을 떄 조금씩 바꾸기 시작했다. 천천히.. 다치지않게 소중히.. 구조도 바꿨는데, 바꾸면서 느끼는게 굉장히 많았다. 간단하게나마 기록을 해보려한다. battle라우터를 예로 들면 현재 구조는 이렇다. router.ts const router: Router = Router(); router.post( '/', memberAuthMiddleWare, createBattleContractInterceptor, createBattleContractController, responseSuccessInterceptor, ); 일반적인 라우터. 들어오면, 멤버검증하는 미들웨어 -> 타입 및 예외처리만 하는 ..