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 패키지
코드를 실행하기 위해 필요한 주요 패키지:
- Express
- 설치: npm install express
- 역할: 라우터 및 서버 구성을 위해 사용.
- Axios
- 설치: npm install axios
- 역할: HTTP 요청을 보내 Riot API 데이터를 가져옴.
- Prisma
- 설치: npm install prisma @prisma/client
- 역할: 데이터베이스와 상호작용.
- 설정:
- prisma init으로 Prisma 초기화.
- schema.prisma 파일 설정.
- 데이터베이스 마이그레이션: npx prisma migrate dev.
- 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" } ] }
오류처리
# 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 |