Alamofire는 swift기반의 네트워킹을 도와주는 라이브러리입니다.
URLSession을 기반으로 하는 라이브러리로,
네트워킹 작업을 단순화시켜주고 네트워킹을 위한 다양한 메서드와 JSON파싱 등을 제공해줍니다.
- 연결가능한 Request, Response메서드를 제공
- Combine을 지원
- URL, JSON형태의 매개변수 인코딩을 지원
- 파일, 데이터, 스트림, MultipartForm 데이터 등의 업로드
- Request, Resume Data로 파일 다운로드
- URLCredential로 인증
- HTTPResponse 검증
- Upload, Download 진행률 클로저
- cURL Command Output
- 동적으로 Request를 조정 및 재시도
- TLS인증서 및 공개키 고정
- Network Reachability
Alamofire를 사용하면 코드가 간소화되고, 가독성이 매우 좋아지며, 여러가지 기능들을 직접 만들지 않고 쉽게 사용할 수 있어 많은 개발자들이 사용하고 있습니다.
아래는 Github 주소입니다.
Alamofire는 SPM(Swift Package Manager)도 지원하여 Xcode 내에서 쉽게 Dependancy를 설정할 수 있습니다.
GitHub - Alamofire/Alamofire: Elegant HTTP Networking in Swift
Elegant HTTP Networking in Swift. Contribute to Alamofire/Alamofire development by creating an account on GitHub.
github.com
가장 많이 쓰이게 되는 request를 살펴보면,
필수값인 convertible 과
method, parameters, encoder, headers, interceptor, requestModifier 매개변수가 있고
method는 get, encoder는 URLEncodedFormParameterEncoder.default가 기본값으로 되어 있습니다.

간단한 예제를 보겠습니다.
Corona-19-API(https://api.corona-19.kr/)의 API를 이용하여 전국 지역별 코로나 현황을 가져오는 예제입니다.
API Key를 발급받고, 요청을 하면 아래와 같은 JSON응답값이 내려옴을 확인할 수 있습니다.

이 데이터에 맞춰 Model을 준비해주고,
struct CityCovidOverview: Codable {
let korea: CovidOverview
let seoul: CovidOverview
let busan: CovidOverview
let daegu: CovidOverview
let incheon: CovidOverview
let gwangju: CovidOverview
let daejeon: CovidOverview
let ulsan: CovidOverview
let sejong: CovidOverview
let gyeonggi: CovidOverview
let gangwon: CovidOverview
let chungbuk: CovidOverview
let chungnam: CovidOverview
let jeonbuk: CovidOverview
let jeonnam: CovidOverview
let gyeongbuk: CovidOverview
let gyeongnam: CovidOverview
let jeju: CovidOverview
}
struct CovidOverview: Codable {
var countryName: String
var newCase: String
var totalCase: String
var recovered: String
var death: String
var percentage: String
}
이제 Alamofire를 import해주고 아래와 같이 요청을 해줍니다.
매우 간단한 코드로 요청부터 응답값 확인, 디코딩까지 작성이 가능합니다.
요청은 get으로 해주고, 파라메터는 Dictionary에 넣어서 준비해주면 됩니다.
func fetchCovidOverview(completionHandler: @escaping (Result<CityCovidOverview, Error>) -> Void) {
let url = "https://api.corona-19.kr/korea/country/new/"
let param = ["serviceKey": "(APIKey)"]
AF.request(url, method: .get, parameters: param)
.responseData { response in
switch response.result {
case let .success(data):
do {
let decoder = JSONDecoder()
let result = try decoder.decode(CityCovidOverview.self, from: data)
completionHandler(.success(result))
} catch {
completionHandler(.failure(error))
}
case let .failure(error):
completionHandler(.failure(error))
}
}
}
값이 잘 들어온 것을 확인할 수 있습니다.

받아온 값으로
이번 WWDC2022에서 소개된 Charts framework를 이용해서 BarMark 차트를 그려봤습니다.
(https://swifty-cody.tistory.com/30 에서 소개하긴 했지만 다음에 더 자세히 써보는 기회를 가져보겠습니다)

Alamofire는 swift기반의 네트워킹을 도와주는 라이브러리입니다.
URLSession을 기반으로 하는 라이브러리로,
네트워킹 작업을 단순화시켜주고 네트워킹을 위한 다양한 메서드와 JSON파싱 등을 제공해줍니다.
- 연결가능한 Request, Response메서드를 제공
- Combine을 지원
- URL, JSON형태의 매개변수 인코딩을 지원
- 파일, 데이터, 스트림, MultipartForm 데이터 등의 업로드
- Request, Resume Data로 파일 다운로드
- URLCredential로 인증
- HTTPResponse 검증
- Upload, Download 진행률 클로저
- cURL Command Output
- 동적으로 Request를 조정 및 재시도
- TLS인증서 및 공개키 고정
- Network Reachability
Alamofire를 사용하면 코드가 간소화되고, 가독성이 매우 좋아지며, 여러가지 기능들을 직접 만들지 않고 쉽게 사용할 수 있어 많은 개발자들이 사용하고 있습니다.
아래는 Github 주소입니다.
Alamofire는 SPM(Swift Package Manager)도 지원하여 Xcode 내에서 쉽게 Dependancy를 설정할 수 있습니다.
GitHub - Alamofire/Alamofire: Elegant HTTP Networking in Swift
Elegant HTTP Networking in Swift. Contribute to Alamofire/Alamofire development by creating an account on GitHub.
github.com
가장 많이 쓰이게 되는 request를 살펴보면,
필수값인 convertible 과
method, parameters, encoder, headers, interceptor, requestModifier 매개변수가 있고
method는 get, encoder는 URLEncodedFormParameterEncoder.default가 기본값으로 되어 있습니다.

간단한 예제를 보겠습니다.
Corona-19-API(https://api.corona-19.kr/)의 API를 이용하여 전국 지역별 코로나 현황을 가져오는 예제입니다.
API Key를 발급받고, 요청을 하면 아래와 같은 JSON응답값이 내려옴을 확인할 수 있습니다.

이 데이터에 맞춰 Model을 준비해주고,
struct CityCovidOverview: Codable {
let korea: CovidOverview
let seoul: CovidOverview
let busan: CovidOverview
let daegu: CovidOverview
let incheon: CovidOverview
let gwangju: CovidOverview
let daejeon: CovidOverview
let ulsan: CovidOverview
let sejong: CovidOverview
let gyeonggi: CovidOverview
let gangwon: CovidOverview
let chungbuk: CovidOverview
let chungnam: CovidOverview
let jeonbuk: CovidOverview
let jeonnam: CovidOverview
let gyeongbuk: CovidOverview
let gyeongnam: CovidOverview
let jeju: CovidOverview
}
struct CovidOverview: Codable {
var countryName: String
var newCase: String
var totalCase: String
var recovered: String
var death: String
var percentage: String
}
이제 Alamofire를 import해주고 아래와 같이 요청을 해줍니다.
매우 간단한 코드로 요청부터 응답값 확인, 디코딩까지 작성이 가능합니다.
요청은 get으로 해주고, 파라메터는 Dictionary에 넣어서 준비해주면 됩니다.
func fetchCovidOverview(completionHandler: @escaping (Result<CityCovidOverview, Error>) -> Void) {
let url = "https://api.corona-19.kr/korea/country/new/"
let param = ["serviceKey": "(APIKey)"]
AF.request(url, method: .get, parameters: param)
.responseData { response in
switch response.result {
case let .success(data):
do {
let decoder = JSONDecoder()
let result = try decoder.decode(CityCovidOverview.self, from: data)
completionHandler(.success(result))
} catch {
completionHandler(.failure(error))
}
case let .failure(error):
completionHandler(.failure(error))
}
}
}
값이 잘 들어온 것을 확인할 수 있습니다.

받아온 값으로
이번 WWDC2022에서 소개된 Charts framework를 이용해서 BarMark 차트를 그려봤습니다.
(https://swifty-cody.tistory.com/30 에서 소개하긴 했지만 다음에 더 자세히 써보는 기회를 가져보겠습니다)
