https://developer.themoviedb.org/reference/movie-popular-list
TMDB API는 영화, TV프로그램의 정보를 받아올 수 있는 사이트이다.
이번 프로젝트를 진행하며 영화 목록 API를 불러와야 해서 사용했다.
위의 링크로 이동하여 가입하고 API키를 받는다.
이제 필요한 데이터를 선택해서 language를 ko-KR로 변경하고 Try It! 버튼을 눌러 response를 확인해보자.
원하는 언어로 코드를 사용할 수 있다는 장점도 있다.
URLSession으로 API 불러오는 방법
func fetchPopularMovies(completion: @escaping (Swift.Result<Data, Error>) -> Void) {
guard let movieURL = URL(string: moiveURL) else {
let error = NSError(domain: "InvalidURL", code: -1, userInfo: [NSLocalizedDescriptionKey: "Invalid movie URL"])
completion(.failure(error))
return
}
var request = URLRequest(url: movieURL)
request.httpMethod = "GET"
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.addValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
var components = URLComponents(url: movieURL, resolvingAgainstBaseURL: true)!
components.queryItems = [
URLQueryItem(name: "language", value: "ko-KR"),
URLQueryItem(name: "page", value: "1")
]
guard let url = components.url else {
let error = NSError(domain: "InvalidURL", code: -1, userInfo: [NSLocalizedDescriptionKey: "Invalid movie URL"])
completion(.failure(error))
return
}
request.url = url
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
completion(.failure(error))
return
}
guard let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) else {
let error = NSError(domain: "HTTPError", code: -1, userInfo: [NSLocalizedDescriptionKey: "Invalid HTTP response"])
completion(.failure(error))
return
}
guard let data = data else {
let error = NSError(domain: "InvalidData", code: -1, userInfo: [NSLocalizedDescriptionKey: "No data received"])
completion(.failure(error))
return
}
completion(.success(data))
}
task.resume()
}
기존의 URLSession 불러오는 방식으로 코드를 작성할 수 있다.
'Devlog👩🏻💻 > etc' 카테고리의 다른 글
[GitHub/iOS] 깃허브 프로젝트 업로드(.gitignore 파일 추가해서 올리기) (8) | 2024.05.05 |
---|---|
hELLO 스킨 글 배치 오류 해결 및 스킨 적용하기 (5) | 2024.04.30 |
[GitHub] The requested URL returned error: 403 (1) | 2024.04.24 |
프로그래머스 Github 자동으로 커밋하기 (2) | 2024.03.20 |
[GitHub] Pull Request 생성 및 DS_Store 파일 Confilct 해결 (1) | 2024.03.14 |