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()
    }
}
반응형