일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ViewModifier
- SwiftUI_Preview_Provider
- UIStackView
- kakaomap
- MapKit
- android
- segue
- ios15
- pod install
- Appearance변경
- swiftUI
- alamofire
- EventKit
- ios
- autolayout
- UserDefaults
- AsyncImage
- NotificationCenter
- cocoapods
- Java
- Kotlin
- programmers
- format형식
- CoreLocation
- Alert
- snapkit
- image
- 코딩테스트
- SWIFT
- 백준
- Today
- Total
감자주먹밥
[IOS] Alamofire! API사용해보기 본문
Alamofire는 네트워크 통신을 지원해주는 라이브러리입니다.
Swift에서 기본으로 지원해주는 URLSession이라는 라이브러리가 있지만, Alamofire를 사용하면 더 간편하게 통신을 할 수 있습니다.
Alamofire 사용해보기
먼저 Alamofire를 사용하려면 Cocoapods을 설치해야합니다.
터미널에 brew가 깔려 있다면 아래 명령어를 이용해 CocoaPods을 설치할 수 있습니다.
brew install cocoapods
설치가 끝났다면 프로젝트를 만들어 놓고 터미널에서 프로젝트 폴더로 이동합니다.
pod init
이동한 디렉터리에서 위 명령어를 이용하면 Podfile이라는 파일이 하나 생성됩니다.
그 다음 Podfile에 사용할 외부 라이브러리를 넣어주면 됩니다.
pod 'Alamofire', '~>5.5'
위 텍스트를 Podfile에 추가해주면 됩니다.
Alamofire 설치법과 설명은 아래 링크에서 확인 할 수 있습니다!
https://github.com/Alamofire/Alamofire
Alamofire은 3가지 주요 기능이 있습니다!
- AF.upload -> multifile, stream, file or data method를 업로드 할 수 있습니다.
- AF.download -> 파일을 다운로드 할 수 있습니다. 이미 진행중인 파일도 다운로드 할 수 있습니다.
- AF.request -> 파일 전송과 관련되지 않은 모든 HTTP 요청을 처리할 수 있습니다.
API를 사용하기 위한 request 메서드만 알아보겠습니다.
open func request<Parameters: Encodable>(_ convertible: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoder: ParameterEncoder = URLEncodedFormParameterEncoder.default,
headers: HTTPHeaders? = nil,
interceptor: RequestInterceptor? = nil) -> DataRequest
파라미터가 없는 GET방식 통신을 한다면 url만 넣어줘도 잘 동작합니다.
func fetchCovidOverview(completionHandler: @escaping (Result<CityCovidOverview, Error>) -> Void) {
let url = "https://api.corona-19.kr/korea/country/new/"
let param = [
"serviceKey": "----"
]
AF.request(url, method: .get, parameters: param)
.validate(statusCode: 200..<300)
.responseData(completionHandler: { 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))
}
})
}
AF는 Alamofire에 기본 선언되어 있는 전역 변수로 Session.default를 가지고 있습니다.
GET 방식으로 통신을 하고. 파라미터를 넘겨주어 request를 보냅니다.
validate에서 statusCode를 설정한 범위에 있음을 확인해 오류처리를 단순화 시킬 수 있습니다.
responseData에서 응답을 받았을 때 처리할 클로저를 정의해 줍니다.
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))
}
응답 받았을 때 클로저에서 실행되는 코드를 자세히 보겠습니다.
응답받은 response data는 JSON형식으로 들어옴으로 JSONDecoder를 생성해줍니다.
미리 JSON파싱을 위해 만들어둔 struct를 기준으로 잡아 데이터를 파싱합니다. 성공하면 함수 파라미터로 받았던 탈출 클로저를 실행시킵니다.
JSON파싱은 기본으로 지원해주는 라이브러리도 있지만 SwiftyJson이라는 간편한 외부 라이브러리도 있어서 나중에 사용해보고 정리해 보겠습니다!
https://www.raywenderlich.com/35-alamofire-tutorial-getting-started
'IOS > UIKit' 카테고리의 다른 글
[IOS] 첫 프로젝트 Thinking Mirror 회고 및 정리 (0) | 2022.09.28 |
---|---|
[IOS] 카메라 사용하기 UIImagePickerController (0) | 2022.03.09 |
M1 칩 CocoaPods pod install error & homebrew 설치 (0) | 2022.02.19 |
[IOS] Notification Center 사용하기 (0) | 2022.02.07 |
[IOS] CollectionView 정리 (0) | 2022.02.06 |