[iOS] Alamofire

김상우·2021년 11월 11일
0

ref : https://www.zehye.kr/ios/2020/04/01/12iOS_alamofire/

Alamofire 란?

  • Alamorefire 란 iOS, macOS를 위한 Swift 기반의 HTTP 네트워킹 라이브러리이다.
  • URLSession 에 기반한 라이브러리로, 네트워킹 작업을 단순화 하고,
    네트워킹을 위한 다양한 메서드와 json parsing 등을 제공한다.
  • 주요 특징
    1. 함께 사용가능한 (chainable) request / response 메소드
    2. URL / json / plist 형태의 파라미터 인코딩
    3. 파일 / 데이터 / 스트림 / 멀티 파트폼 데이터 업로드
    4. HTTP 리스폰스 검증 (Validation)
    5. 광범위한 단위 테스트 보장

URLSession 대신 Alamofire 를 사용하는 이유

  • Alamofire 를 사용하지 않더라도 애플에서 기본으로 제공하는 URLSession 을 이용해서도 HTTP 통신이 가능하다.
  • 그럼에도 Alamofire 를 사용하는 이유
    1. 코드의 간소화 및 가독성 측면에서 도움을 주기 때문
    2. 여러 기능을 직접 구축하지 않아도 쉽게 사용 가능하게 함

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 의 코드량이 많이 차이난다.

profile
안녕하세요, iOS 와 알고리즘에 대한 글을 씁니다.

0개의 댓글