[ 2024.09.09 TIL ] 아이템 시뮬레이터

박지영·2024년 9월 9일
0

Today I Learned

목록 보기
41/88
post-thumbnail

🎮 아이템 시뮬레이터

🧍‍♂️ 캐릭터 관련 기능

캐릭터 생성 API

  1. 중복되는 캐릭터명이 이미 있는지 확인

  2. 캐릭터를 생성하고 생성된 캐릭터의 아이디 반환

  3. 예시

📌 캐릭터 조회 API

  1. 캐릭터의 아이디를 조회

  2. 로그인한 계정의 캐릭터가 맞으면 게임머니까지 보여주고, 다른 계정이거나 로그인을 안했으면 게임머니는 보여주지 않는다.

  • 그냥 인증 미들웨어를 거치면 되지 않을까? 단순히 생각했는데 인증 미들웨어를 거치게 구현하면

    인증이 안 됐을 때는 핸들러가 넘어가 버리는 문제가 있었다.

    이 부분을 구현하는데 정말 골머리를 썩였는데 자력으로는 해결하기 힘들 것 같아

    구글링도 해보았지만 해답을 찾기 어려웠다.

    인증 미들웨어를 거치지 않고 req.user를 사용하려고 하니

    req.user는 인증 미들웨어를 거쳐야만 가져올 수 있었고,

    그래서 그냥 인증 미들웨어를 하나 더 만들기로 했다.

    • 선택적 인증 미들웨어 생성

      인증에 실패해도 next()를 호출하게 구현

  1. 예시

캐릭터 삭제 API

  1. 캐릭터 존재 여부 조회

  2. 해당되는 캐릭터 삭제

  3. 예시

🧥 아이템 관련 기능

아이템 생성 API

  1. 아이템의 각 항목에 맞는 양식 검사

  2. 아이템 생성 후 아이템 정보 반환

  3. 예시

아이템 수정 API

  1. 아이템 존재 여부 판별

  2. 수정 사항 반영 및 수정 사항 반환

  3. 예시

아이템 목록 조회 API

  1. 아이템 목록 조회

  2. 예시

아이템 상세 조회 API

  1. 아이템 상세 조회

  2. 예시

📌 아이템 구매 API

  1. 캐릭터의 id를 전달받고 req에 item_code와 count를 전달받고 인증 미들웨어를 거친다.
  1. 캐릭터 존재 여부 판별, 아이템 코드 존재 여부 판별, 소지금 판별
  1. 캐릭터 소지금 변경, 아이템 소지 여부에 따라 생성 및 수량 갱신
  1. 예시
  • 아이템 상세 조회 api를 구현할 때는 좀 애먹은 점이 많다.

    인벤토리에 아이템을 추가할 때 처음에 생성하는 것까진 미리 생각했는데

    이미 아이템이 있는 경우는 어떻게 하면 좋을까? 하다가

    그냥 분기를 나눠서 이미 있을 경우엔 다른 로직을 수행하게 하면 되지 않을까?란

    생각이 떠올라 만들어봤는데 잘 작동했다. 구현을 한 후에 insomnia로 몇번 테스트 해봤는데

    테스트를 하다보니 만약 아이템을 인벤토리를 추가하는 로직에서 에러가 생기면

    아이템은 못 얻었지만 소지금이 줄어드는 현상이 생길 것 같아서 강의에서 봤던

    트랜잭션을 이용해보았다.

🎸 기타

dotenv 환경 정보 관리 및 세션 스토리지 생성


에러 처리 미들웨어 추가

  1. 예상치 못한 에러를 처리하기 위한 에러 처리 미들웨어 error.handling.middleware.js 생성

  2. 라우터의 각 메소드에 try/catch 처리

  3. app.js에 에러 핸들러 사용 등록

에러 처리 로직 전면 수정

  1. 에러 예외 처리를 res를 바로 반환하지 않고 에러 핸들러를 거치게 변경

  2. 에러 처리 미들웨어 수정

    예외 처리된 에러들은 에러 처리 미들웨어에서 일괄적으로 관리하게 변경

profile
신입 개발자

0개의 댓글