iOS Alamofire Apply (iOS Alamofire 적용)
요즘 어플리케이션은 대부분 수시로 추가되고 변하는 컨텐츠를 보여주는
방식이기 때문에 서버와의 통신이 불가피 하다.
따라서 오늘은 서버와 API 통신을 할수있게끔 도와주는
Alamofire 라이브러리를 적용해 보겠다.
1. 설치
Podfile에
pod 'Alamofire' 를 추가하고
터미널에서 해당 프로젝트 디렉토리 (Pod파일이 위치한 곳 )Pod install 을 입력해준다
2. 통신전 준비
- Model
import Foundation
struct BoardList: Codable {
let idx: Int
let title: String
let content:String
}
- API Url 및 Param Code
enum Result<T> {
case success(T)
case error(Error)
}
enum ServiceError: Error {
case parsingError
}
struct BoardsAPI {
static let baseURL = "http://test.com/temp/v1/board/"
static let param: [String : String] = [BoardsAPI.Parms.token : "xxxxxxxxxxxxxxxx"]
enum Parms {
static let token = "token"
}
}
- API 요청 Code
struct ServiceToGetBoards {
func getURL(_ str: String) -> URL? {
let url = URL(string: str)
return url
}
func getBoardList(completion: @escaping (Result<BoardList>) -> ()){
guard let url = getURL(BoardsAPI.baseURL) else {return}
Alamofire.request(url,
method: .get,
parameters: BoardsAPI.param,
encoding: URLEncoding.default)
.responseData { (response) in
switch response.result {
case .success(let value):
do {
let list = try JSONDecoder().decode(BoardList.self, from: value)
completion(.success(list))
} catch {
completion(.error(ServiceError.parsingError))
}
case .failure(let error):
completion(.error(error))
}
}
}
}
- 사용 방법
var service: ServiceToGetBoards?
service = ServiceToGetBoards()
service?.getBoardList(completion: { [weak self] (result) in
switch result {
case .success(let value):
//do something
case .error(let err):
//do something
}
})
그냥 간단하게 사용 법을 적어 보았습니다.
실제로는 좀더 세분화 되고 분리되어 있지만 보기 편하라고,
코드들을 합쳐 보았습니다.
그냥 이렇게 사용하는 거구나 라고 알고 계시면 될듯 합니다.