2024-09-10 CH-3 개인과제 (아이템 시뮬레이터 구현) 시작 1

MOON·2024년 9월 10일
0

내일배움캠프 과제

목록 보기
3/36

자 이제 시작이야~ 오늘로 내일배움캠프에서 제공해준 Node.js 강의를 완강했습니다.
아직 강의 내용을 정리해야 될 부분이 많지만 일단 정해진 기한에 맞게 과제제출을 하기위해 바로 과제부터 시작 할려고 합니다.

추후 벨로그와 깃허브에 내용정리하기!

그럼 과제 내용부터 살펴 보겠습니다.

개인과제는 아이템 시뮬레이터를 구현하는 것입니다.

  • 아이템 시뮬레이터란?
    간단하게 게임 클라이언트 말고, 가상의 시뮬레이션으로 현재 나의 게임 아이템 상황 및 다른 사람들의 게임 아이템 상황을 보면서 비교할 수 있고, 어떤 아이템을 갖추면 좋을지 시뮬레이션을 해볼 수 있는 정보를 제공하는 서비스 입니다.

개발 가이드

  • Node.js의 웹 프레임워크 Express를 이용합니다.
  • 패키지 매니저 설치 : npm || yarn 둘 중 하나 선택 저는 yarn 선택
  • 모듈 시스템 : type: "commonjs" || type: "module" 둘 중 하나 선택 저는 type: "module" 선택
  • 데이터베이스 : Mysql, 직접 설치하지 않고, cloud 서비스인 AWS RDS를 이용합니다.

필수기능

    1. 프로젝트 관리
      • .env파일을 이용해 민감한 정보(DB 계정 정보,API key를 관리합니다
      • .gitignore 파일을 생성해 .env파일과 node_modules폴더를 Github에 올리지 않도록 합니다.
      • .prettierrc파일을 생성해 prettier를 이용해 코드 스타일을 설정합니다.
    1. 프로젝트 완성시 AWS EC2로 배포하고, 배포된 IP주소를 제출합니다.
    1. 인증 미들웨어 구현
      • Request Authrization 헤더에서 JWT 가져와서 인증 여부 확인합니다.
      • 클라이언트에서는 쿠키로 JWT를 전달하지 않고 Authrization 헤더fhaks JWT를 전달합니다.
      • 성공과 실패 여부를 Http Status Code와 메세지를 반환합니다.
      • Authorization에 담겨 있는 값의 형식이 표준(Bearer <JWT Value>) 베어러-토큰 형식과 일치하는지 확인합니다.
      • JWT 유효 기한을 확인합니다.
      • 인증 성공시 req.locals.user와 같은 곳에 사용자 정보를 담습니다.
    1. 데이터베이스 모델링
      • 아이템 테이블
      • 계정 테이블
      • 캐릭터 테이블 : 하나의 계정은 여러개의 캐릭터를 보유할 수 있습니다. 1:N
      • 캐릭터-인벤토리 테이블 : 캐릭터가 보유는 하고있으나 장착하고 있지 않은 아이템 정보들
      • 캐릭터-아이템 테이블 : 실제로 캐릭터가 장착한 아이템 정보들
    1. API 구현하기
      • 회원가입 API
        1. 비밀 번호는 평문으로 저장하지 않고 해싱된 값을 저장
        2. 유효성 체크 아이디는 영문 소문자 + 숫자 조합으로 구성되고, 비밀번호는 최소 6글자 이상이며, 비밀번호 확인 컬럼과 일치해야 합니다.
        3. 성공시 비밀번호 제외 한 사용자의 정보를 반환합니다.
      • 로그인 API
        1. 아이디, 비밀번호로 로그인을 요청합니다.
        2. 계정 정보가 일치하지 않을 경우 HTTP 상태코드와 에러 메세지를 반환합니다.
          • 아이디가 존재하지 않는 경우
          • 아이디는 존재하는데 비밀번호가 틀리는 경우
        3. 로그인 성공 시, 엑세스 토큰을 생성하여 반환합니다.
          • 엑세스 토큰의 Payload는 로그인 한 계정의 사용자 정보 ID를 담습니다.
      • 캐릭터 생성 API → (JWT 인증 필요)
        1. request에 캐릭터 명을 전달하고, 캐릭터 ID를 response로 돌려받습니다.
        2. 캐릭터 생성시 health : 500, power: 100 스탯을 갖고, money: 10000 게임머니를 갖습니다.
      • 캐릭터 삭제 API → (JWT 인증 필요)
        1. 삭제할 캐릭터의 ID는 URI의 parameter로 전달
      • 캐릭터 상세 조회 API
        1. 조회할 캐릭터의 ID는 URI의 parameter로 전달
        2. 캐릭터 이름, HP, 힘 스탯을 반환합니다.
        3. 단 내 캐릭터를 상세 조회시에는 현재 캐릭터가 갖고있는 게임 머니까지 조회 되어야 합니다. 여기선 (JWT 인증 필요) 하겠네요
      • 아이템 생성 API
        1. 아이템 코드, 아이템 명, 아이템 능력 및 아이템 가격을 request에서 전달 받기
        2. 아이템 정보 전체 반환
        3. 아이템 능력은 JSON 포맷으로 반환
      • 아이템 수정 API
        1. 아이템 코드는 URI의 parameter로 전달 받기
        2. 아이템 명, 아이템 능력을 request에서 전달 받기
        3. 아이템 변경된 정보 전체 반환
        4. 아이템 능력은 JSON 포맷으로 반환
      • 아이템 목록 조회 API
        1. 아이템 코드, 아이템 명, 아이템 가격 내용만 조회
        2. 아이템 생성 API를 통해 생성된 모든 아이템들이 목록으로 조회가 될 수 있어야 합니다.
      • 아이템 상세 조회 API
        1. 아이템 코드를 URI의 parameter로 전달 받습니다
        2. 아이템 코드, 아이템 명, 아이템 능력, 아이템 가격을 조회합니다.

이렇게 저도 하나하나 확인해 보니깐 무엇부터 해야될지 좀 감이 잡히는 것 같습니다.

밑 준비 및 환경설정

Node.js 웹 프레임워크 : express
사용할 라이브러리 : prisma, @prisma/client, bcrypt(비밀번호를 암호화 하기위해 사용), jsonwebtoken(JWT 토큰 생성 및 인증여부 확인을 위해), dotenv 등
개발 도구 : nodemon, prettier 등
생성할 파일 : .env, .gitignore, .prettierrc 등
// 추후 추가할게 있으면 추가 예정

이제 AWS ec2 인스턴스와 프로젝트를 연결부터 확인 후 AWS RDS를 사용해서 DB를 연결 설정을하고, 테이블을 모델링하고, 인증 미들웨어를 구현한 후, 해당 API 명세서를 작성해보고 API 만들면 될 것 같습니다.

오늘은 일단 필수기능까지만 알아보고 필수기능을 다 구현후에 도전기능을 알아보도록 하겠습니다. 그럼 오늘도 화이팅!

profile
안녕하세요

0개의 댓글