본문 바로가기
내일배움 과제/CH4-2

챔피언즈 테이블 체우기

by GREEN나무 2024. 12. 24.
728x90

 

1. 코드 문법 정리

주요 사용된 기술과 문법

  • Express: Node.js 기반 웹 프레임워크로 Router를 활용해 경로를 정의.
  • Axios: HTTP 요청 라이브러리로, Riot API 호출에 사용.
  • Prisma: ORM(Object-Relational Mapping) 도구로, 데이터베이스와 상호작용.
  • 비동기 처리: async/await를 사용해 비동기 작업을 순차적으로 처리.
  • HTTP 메서드:
    • GET: 챔피언 리스트 가져오기.
    • POST: 챔피언 리스트 업데이트.

코드 상세 해석

  • championRoutes.get('/champions')
    저장된 챔피언 데이터를 데이터베이스에서 읽어와 반환.
    • prisma.champions.findMany로 데이터 조회.
    • 데이터가 없으면 404 응답.
    • 성공적으로 조회하면 200 응답.
  • championRoutes.post('/update_champion_list')
    Riot API에서 최신 데이터를 가져와 기존 데이터 삭제 후 새 데이터를 삽입.
    • Riot API URL을 동적으로 생성.
    • 기존 데이터베이스의 모든 데이터를 삭제: prisma.champions.deleteMany.
    • API 응답 데이터를 매핑해 삽입 형식에 맞게 변환 후 prisma.champions.createMany로 저장.

2. 설치해야 하는 npm 패키지

코드를 실행하기 위해 필요한 주요 패키지:

  1. Express
    • 설치: npm install express
    • 역할: 라우터 및 서버 구성을 위해 사용.
  2. Axios
    • 설치: npm install axios
    • 역할: HTTP 요청을 보내 Riot API 데이터를 가져옴.
  3. Prisma
    • 설치: npm install prisma @prisma/client
    • 역할: 데이터베이스와 상호작용.
    • 설정:
      1. prisma init으로 Prisma 초기화.
      2. schema.prisma 파일 설정.
      3. 데이터베이스 마이그레이션: npx prisma migrate dev.
  4. dotenv (선택 사항)
    • 설치: npm install dotenv
    • 역할: 환경변수 관리를 위해 사용.

3. API 명세서

GET /champions

  • 설명: 데이터베이스에 저장된 모든 챔피언의 이름과 이미지를 반환.
  • 응답 예시:
    {
      "success": true,
      "message": [
        {
          "name": "Ahri",
          "image": "http://ddragon.leagueoflegends.com/cdn/13.6.1/img/champion/Ahri.png"
        },
        {
          "name": "Akali",
          "image": "http://ddragon.leagueoflegends.com/cdn/13.6.1/img/champion/Akali.png"
        }
      ]
    }
    

POST /update_champion_list

  • 설명: Riot API에서 챔피언 데이터를 가져와 데이터베이스를 업데이트.
  • 요청 형식:
    • Content-Type: application/json
    • Body:
      {
        "version": "13.6.1"
      }
      
  • 응답 예시:
    {
      "success": true,
      "message": "챔피언 리스트 업데이트 완료!",
      "data": [
        {
          "name": "Ahri",
          "image": "http://ddragon.leagueoflegends.com/cdn/13.6.1/img/champion/Ahri.png"
        }
      ]
    }
    
  1.  

 

오류처리

 

# 404 챔피언 데이터 유무
{ errorMessage: '저장된 챔피언이 없습니다' });

#400 버전입력 확인
{ errorMessage: '버전이 필요합니다' }

#404 Riot API 호출 성공 여부
{ errorMessage: 'Riot API에서 챔피언 데이터를 가져오지 못했습니다' }

 

'내일배움 과제 > CH4-2' 카테고리의 다른 글

게시판 프론트  (0) 2024.12.26
듀오후기 API  (0) 2024.12.24
환경설정  (0) 2024.12.24
Riot API - 챔피언 이름과 이미지 파싱  (0) 2024.12.24
롤 API 사용해 테이블 만들기  (0) 2024.12.23