자 이제 시작이야~ 오늘로 내일배움캠프에서 제공해준 Node.js 강의를 완강했습니다.
아직 강의 내용을 정리해야 될 부분이 많지만 일단 정해진 기한에 맞게 과제제출을 하기위해 바로 과제부터 시작 할려고 합니다.
그럼 과제 내용부터 살펴 보겠습니다.
개인과제는 아이템 시뮬레이터를 구현하는 것입니다.
개발 가이드
필수기능
- 프로젝트 관리
- .env파일을 이용해 민감한 정보(DB 계정 정보,API key를 관리합니다
- .gitignore 파일을 생성해 .env파일과 node_modules폴더를 Github에 올리지 않도록 합니다.
- .prettierrc파일을 생성해 prettier를 이용해 코드 스타일을 설정합니다.
- 프로젝트 완성시 AWS EC2로 배포하고, 배포된 IP주소를 제출합니다.
- 인증 미들웨어 구현
- Request Authrization 헤더에서 JWT 가져와서 인증 여부 확인합니다.
- 클라이언트에서는 쿠키로 JWT를 전달하지 않고 Authrization 헤더fhaks JWT를 전달합니다.
- 성공과 실패 여부를 Http Status Code와 메세지를 반환합니다.
- Authorization에 담겨 있는 값의 형식이 표준
(Bearer <JWT Value>)
베어러-토큰 형식과 일치하는지 확인합니다.- JWT 유효 기한을 확인합니다.
- 인증 성공시 req.locals.user와 같은 곳에 사용자 정보를 담습니다.
- 데이터베이스 모델링
- 아이템 테이블
- 계정 테이블
- 캐릭터 테이블 : 하나의 계정은 여러개의 캐릭터를 보유할 수 있습니다. 1:N
- 캐릭터-인벤토리 테이블 : 캐릭터가 보유는 하고있으나 장착하고 있지 않은 아이템 정보들
- 캐릭터-아이템 테이블 : 실제로 캐릭터가 장착한 아이템 정보들
- API 구현하기
- 회원가입 API
- 비밀 번호는 평문으로 저장하지 않고 해싱된 값을 저장
- 유효성 체크 아이디는 영문 소문자 + 숫자 조합으로 구성되고, 비밀번호는 최소 6글자 이상이며, 비밀번호 확인 컬럼과 일치해야 합니다.
- 성공시 비밀번호 제외 한 사용자의 정보를 반환합니다.
- 로그인 API
- 아이디, 비밀번호로 로그인을 요청합니다.
- 계정 정보가 일치하지 않을 경우 HTTP 상태코드와 에러 메세지를 반환합니다.
- 아이디가 존재하지 않는 경우
- 아이디는 존재하는데 비밀번호가 틀리는 경우
- 로그인 성공 시, 엑세스 토큰을 생성하여 반환합니다.
- 엑세스 토큰의 Payload는 로그인 한 계정의 사용자 정보 ID를 담습니다.
- 캐릭터 생성 API → (JWT 인증 필요)
- request에 캐릭터 명을 전달하고, 캐릭터 ID를 response로 돌려받습니다.
- 캐릭터 생성시 health : 500, power: 100 스탯을 갖고, money: 10000 게임머니를 갖습니다.
- 캐릭터 삭제 API → (JWT 인증 필요)
- 삭제할 캐릭터의 ID는 URI의 parameter로 전달
- 캐릭터 상세 조회 API
- 조회할 캐릭터의 ID는 URI의 parameter로 전달
- 캐릭터 이름, HP, 힘 스탯을 반환합니다.
- 단 내 캐릭터를 상세 조회시에는 현재 캐릭터가 갖고있는 게임 머니까지 조회 되어야 합니다. 여기선 (JWT 인증 필요) 하겠네요
- 아이템 생성 API
- 아이템 코드, 아이템 명, 아이템 능력 및 아이템 가격을 request에서 전달 받기
- 아이템 정보 전체 반환
- 아이템 능력은 JSON 포맷으로 반환
- 아이템 수정 API
- 아이템 코드는 URI의 parameter로 전달 받기
- 아이템 명, 아이템 능력을 request에서 전달 받기
- 아이템 변경된 정보 전체 반환
- 아이템 능력은 JSON 포맷으로 반환
- 아이템 목록 조회 API
- 아이템 코드, 아이템 명, 아이템 가격 내용만 조회
- 아이템 생성 API를 통해 생성된 모든 아이템들이 목록으로 조회가 될 수 있어야 합니다.
- 아이템 상세 조회 API
- 아이템 코드를 URI의 parameter로 전달 받습니다
- 아이템 코드, 아이템 명, 아이템 능력, 아이템 가격을 조회합니다.
이렇게 저도 하나하나 확인해 보니깐 무엇부터 해야될지 좀 감이 잡히는 것 같습니다.
밑 준비 및 환경설정
Node.js 웹 프레임워크 : express
사용할 라이브러리 : prisma, @prisma/client, bcrypt(비밀번호를 암호화 하기위해 사용), jsonwebtoken(JWT 토큰 생성 및 인증여부 확인을 위해), dotenv 등
개발 도구 : nodemon, prettier 등
생성할 파일 : .env, .gitignore, .prettierrc 등
// 추후 추가할게 있으면 추가 예정
이제 AWS ec2 인스턴스와 프로젝트를 연결부터 확인 후 AWS RDS를 사용해서 DB를 연결 설정을하고, 테이블을 모델링하고, 인증 미들웨어를 구현한 후, 해당 API 명세서를 작성해보고 API 만들면 될 것 같습니다.
오늘은 일단 필수기능까지만 알아보고 필수기능을 다 구현후에 도전기능을 알아보도록 하겠습니다. 그럼 오늘도 화이팅!