본문 바로가기

Express6

[Node.js] Nest.js에서 프로젝트 시작하기 0. 개요 [ 왜 Nest.js 인가 ] 이전 프로젝트에서는 Node.js에 express 프레임워크를 사용해서 개발을 해왔다. 하지만 express가 불편하다는 생각을 가지고 있었다. 명확하게 정해져 있는 구조가 없다보니 개발자마다 폴더 구조 등이 자유로웠고 가끔은 이런 것들이 꼬이기도 했다. (그리고 나는 프로젝트 문서화를 중요하게 생각하는데 Express에서는 하나하나 yaml 파일로 작성하고 있었다. 물론 express에서도 좀 더 자동화할 수 있지만 nest에서는 좀 더 간편하게 swagger 문서를 자동으로 달 수 있었다.) ( 참고 ) express에서 nest.js처럼 사용할 수 있는 방법도 있다. expresss 서버 구조 : https://jhyeok.com/node-backend-st.. 2022. 9. 14.
[#1] TypeScript + Express에서 Sequelize 시작하기 0. 개요 시퀄라이즈는 node.js ORM이다. Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server를 지원한다. 3차 웹 프로젝트에서 MySQL DB를 사용하기 위해서 Sequelize를 사용해보자! 1. 설치 yarn add sequelize sequelize-cli mysql2 sequelize: RDB와 매핑되도록 해주는 ORM 패키지 sequelize-cli: commandline for sequelize mysql2 : mysql과 연결을 위해 필요한 패키지 2. 초기 설정 ✔️ sequelize init sequelize 명령어 확인 -h 옵션으로 명령어를 확인할 수 있다. npx sequelize -h 아래 명령어를 입력하면 초기 폴더 구조가 .. 2022. 6. 14.
[Error: TS(2339)] Express Request 확장하기 😥 문제 상황 1. Token 검증 Middleware 작성 토큰 검증 코드를 작성하면서 req.currentUserId로 decoded한 값을 할당하려던 중 js 프로젝트에서는 오류가 없었던 코드가 ts에서 오류가 생겼다. // ./src/middlewares/loginRequired.ts ... try { if (!process.env.JWT_SECRET_KEY) { throw new Error("JWT_SECRET_KEY가 존재하지 않습니다."); } const secretKey: string = process.env.JWT_SECRET_KEY; const jwtDecoded: any = jwt.verify(userToken, secretKey); const userId = jwtDecoded.us.. 2022. 6. 9.
TypeScript + Node.js + Express 에서 프로젝트 시작하기 0. 프로젝트 폴더 생성 나의 프로젝트 폴더 구조는 다음과 같다. 1. 패키치 설치 나는 package manager로 yarn을 사용했다. 내 프로젝트 폴더 구조 기준으로 back 폴더에서 다음 명령어를 실행했다. 1) yarn 초기화 $ yarn init 2) 필요한 패키치 설치 typescript 전역으로 설치 yarn add typescript -g $ yarn add ts-node nodemon typescript @types/express @types/node nodemon --dev $ yarn add express typescript는 node에서 바로 실행되지 않기 때문에 tsc를 사용해서 javascript로 변환한 다음 실행된다. 프로덕션 환경에 올리기 위해서는 모든 파일.. 2022. 6. 6.
Swagger를 활용한 API 명세와 개발 협업 2탄 0. 개요 💡 swagger를 명세하는 방법은 다양하다. 모듈을 설치해서 각각의 router 파일 상단에 직접 명세 yaml 파일이나 json 파일 하나에 모든 API 명세를 하는 방법 [ 이전 프로젝트에서 2번 방식을 선택한 이유 ] 개인적으로 라우터가 지저분해지는 것을 정말 싫어한다. 1번 방식은 코드가 복잡해지고 명세와 router 코드가 함께 있어 코드 가독성이 떨어졌다. 그래서 지난 프로젝트에서는 하나의 파일에 모든 API를 설계하는 방식으로 협업을 했다. [ 아놔.. 어디 괄호가 잘못된거야? ] 일단 yaml 파일, json 파일 두가지 모두 들여쓰기 또는 괄호가 중요하다. 그런데 점점 API가 많아질수록 괄호나 들여쓰기 실수가 발생했을 때 오류를 찾는 과정이 정말 피곤했다.. (정말정말) 🤣.. 2022. 6. 4.
[Node.js+Express] Refresh Token 구현 01. 개요 ✔️ GitHub Repository 1차 프로젝트로 포트폴리오 공유 웹서비스를 개발했다. 당시 개발 일정이 2주로 한정되어 있었고 시간이 부족해서 Access Token만을 이용한 인증 방식으로 개발을 했다. 개발 과정에서도 팀원끼리 한번 발급받은 Token으로 유효기간이 만료되기 전까지팀원 전체가 돌아가면서 사용했다.이때 들었던 생각은 만약에 제 3자가 유효기간이 만료되기 전 Token을 탈취해서 사용하게 된다면우리 서비스는 보안이 좋다고 할 수 있을까? 우리 서비스의 사용자가 안심하고 서비스를 이용할 수 있을까? 라는 고민이 들었다. 그래서 현재 진행하고 있는 2차 프로젝트에는 Refresh Token을 구현하려고 한다. + 왜 JWT 토큰을 사용할까? Stateful 해야하는 세션의 .. 2022. 4. 25.
반응형