Swift
Swift 네이버 영화 API의 네트워크 통신 코드 구현
지용빡
2022. 7. 8. 01:39
반응형
Swift 네이버 영화 API의 네트워크 통신 코드 구현
MovieSearchRequestModel
import Foundation
struct MovieSaearchRequestModel: Codable {
let queary: String
}
MovieSearchResponseModel
import Foundation
struct MovieSearchResponseModel: Decodable {
var items: [Movie] = []
}
Movie
- 데이터를 받아줄 Movie라는 구조체를 하나 따로 정의하겠습니다.
struct Movie: Decodable {
let title: String
private let image: String
let userRating: String
let actor: String
let director: String
let pubDate: String
var imageURL: URL? { URL(string: image) }
}
MovieSearchManager
- 실질적으로 리퀘스트 메서드를 가질 MovieSearcgManager를 구현을 해줍니다.
import Alamofire
import Foundation
protocol MovieSearchManagerProtocol {
func request(from keyword: String, completionHandler: @escaping([Movie]) -> Void)
}
struct MovieSearchMangaer: MovieSearchManagerProtocol {
func request(from keyword: String, completionHandler: @escaping([Movie]) -> Void) {
guard let url = URL(string: "https://openapi.naver.com/v1/search/movie.json") else { return }
let parameters = MovieSaearchRequestModel(queary: keyword)
let headers: HTTPHeaders = [
"X-Naver-Client-Id": "Client-ID",
"X-Naver-Client-Secret": "Client-Secret"
]
AF.request(
url,
method: .get,
parameters: parameters,
headers: headers
)
.responseDecodable(
of: MovieSearchResponseModel.self) { response in
switch response.result {
case .success(let result):
completionHandler(result.items)
case .failure(let error):
print(error)
}
}
.resume()
}
}
반응형