[Swift] URLSession VS Alamofire

8415 단어 swiftswift

URLSession

// 호출 URL 만들기
var components = URLComponents(string: "https://api.mywebserver.com/v1/board")!
components.queryItems = ["title": "Junsu"].map { (key, value) in
	URLQueryItem(name: key, value: value)
}

// Request 생성 및 실행
let request = try! URLRequest(url: components.url!, method: .get)
URLSession.shared.dataTask(with: request) { (data, response, error) in
	do {
    	guard let data = data,
        	let response = response as? HTTPURLResponse, (200 ..< 300) ~= response.statusCode,
            error == nil else {
            throw error ?? Error.requestFailed
       }
       let response = try JSONDecoder().decode(Response.self, from: data)
       print("Success \(response)")
	} catch {
    	print("failure: \(error.localizedDescription)")
    }
}
  • 기본적인 HTTP 네트워킹 방식

Alamofire

AF.request("https://api.mywebserver.com/v1/board", method: .get, parameters: ["title": "Junsu"])
	.validate()
    .responseJSON { response in
    	switch response.result {
        case .success(let result):
        	debugPrint("success \(result)")
            
        case .failure(let error):
        	debugPrint("failure \(error)")
        }
    }
  • Swift 기반의 HTTP 네트워킹 라이브러리
  • 코드의 간소화, 가독성 측면에서 도움을 주고 여러 기능을 직접 구축하지 않아도 쉽게 사용할 수 있음.
  • URL에 Parameter을 자동으로 매핑해줌
  • validate() method가 자동으로 200번대(정상 Status)인지 확인해줌

좋은 웹페이지 즐겨찾기