-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
개요
- Pokemon TCG API를 활용하여 포켓몬 카드 정보 가져오기
- Moya 라이브러리를 사용하여 API 호출 및 응답 처리
- Codable을 활용한 데이터 모델링 및 파싱
1. API 타겟 정의
- PokemonTarget 열거형을 정의하여 API 엔드포인트와 요청 파라미터 설정
- TargetType 프로토콜 구현을 통해 Moya에서 사용할 수 있는 타겟 생성
- 기본 URL, 경로, HTTP 메서드, 요청 파라미터, 헤더 등을 지정
2. 네트워크 서비스 구현
final class PokemonRepository: PokemonRepositoryType {
private var provider: MoyaProvider<PokemonTarget>
init() { provider = MoyaProvider<PokemonTarget>() }
}
extension PokemonRepository {
func fetchCards(request: CardsRequest, completion: @escaping (Result<PokemonCards, Error>) -> Void) {
provider.request(.fetchCards(parameters: request.toDictionary)) { result in
switch result {
case .success(let response):
do {
let data = try response.map(PokemonCards.self)
completion(.success(data))
} catch {
completion(.failure(error))
}
case .failure(let error):
completion(.failure(error))
}
}
}
}- PokemonRepository에서 Moya 프로바이더를 사용하여 네트워크 요청 수행
- fetchCards 메서드를 통해 포켓몬 카드 정보를 가져오는 API 호출
- 요청 결과에 따라 성공 시 PokemonCards 모델로 매핑하여 반환, 실패 시 에러 전달
3. 데이터 모델링
struct PokemonCards: Codable {
let data: [PokemonCard]
}
struct PokemonCard: Codable {
let id: String
let name: String
let images: PokemonCardImage
// ...
}
struct PokemonCardImage: Codable {
let small: URL
let large: URL
}- PokemonCards, PokemonCard, PokemonCardImage 등의 구조체를 정의하여 API 응답 데이터 모델링
- Codable 프로토콜 채택을 통해 JSON 데이터와의 자동 인코딩/디코딩 지원
키 관리
xcconfig 파일을 사용하여 API 키, 시크릿 키 등의 민감한 정보 관리
xcconfig 파일을 .gitignore에 추가하여 Git 추적에서 제외
빌드 시점에 xcconfig 파일의 키 값을 주입받아 사용
- PokemonTarget을 사용하여 API 호출에 필요한 엔드포인트, 파라미터 등 정의
- PokemonRepository에서 Moya 프로바이더를 초기화하고 fetchCards 메서드 구현
- 검색 파라미터를 담은 CardsRequest를 사용하여 API 호출 수행
- 응답 결과를 PokemonCards 모델로 매핑하여 상위 레이어로 전달
- 상위 레이어에서는 전달받은 포켓몬 카드 정보를 사용하여 화면 업데이트
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels