ref : https://www.zehye.kr/ios/2020/04/01/12iOS_alamofire/
- Alamorefire 란 iOS, macOS를 위한 Swift 기반의 HTTP 네트워킹 라이브러리이다.
- URLSession 에 기반한 라이브러리로, 네트워킹 작업을 단순화 하고,
네트워킹을 위한 다양한 메서드와 json parsing 등을 제공한다.
- 주요 특징
- 함께 사용가능한 (chainable) request / response 메소드
- URL / json / plist 형태의 파라미터 인코딩
- 파일 / 데이터 / 스트림 / 멀티 파트폼 데이터 업로드
- HTTP 리스폰스 검증 (Validation)
- 광범위한 단위 테스트 보장
- Alamofire 를 사용하지 않더라도 애플에서 기본으로 제공하는 URLSession 을 이용해서도 HTTP 통신이 가능하다.
- 그럼에도 Alamofire 를 사용하는 이유
- 코드의 간소화 및 가독성 측면에서 도움을 주기 때문
- 여러 기능을 직접 구축하지 않아도 쉽게 사용 가능하게 함
Swift 코드 예시
https://velog.io/@heyksw/아이폰-앱-2-현재-날씨는
아래는 [ 현재 날씨는? ] 앱을 만들 때 작성한 코드다.
URLSession 을 통해 weather API 를 사용했다.let session = URLSession(configuration: .default) session.dataTask(with: url) { [weak self] data, response, error in // http status 가 200번 대 면 응답 성공 let successRange = (200...299) guard let data = data, error == nil else { print("session error") } let decoder = JSONDecoder() // response 를 HTTP URL Response 형태로 다운 캐스팅 하고, // successRange 에 status code 를 넘겨줘서 200번 대 인지 체크 if let response = response as? HTTPURLResponse, successRange.contains(response.statusCode) { // 성공적으로 받아왔을 경우 json 데이터 매핑 코드 시작 // ... } else { // status code 가 200번 대가 아닌 경우 에러 }
작성한 코드를 보면, URLSession으로 네트워킹 작업시, status code 에러 검증 처리에서 HTTPURLResponse 형태로 다운 캐스팅 하는 과정이 필요하다.
위의 예시에서도 같은 작업의 코드지만 URLSession 과 Alamofire 의 코드량이 많이 차이난다.