요즘 어플리케이션은 대부분 수시로 추가되고 변하는 컨텐츠를 보여주는
방식이기 때문에 서버와의 통신이 불가피 하다.
따라서 오늘은 서버와 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
}
})
그냥 간단하게 사용 법을 적어 보았습니다.
실제로는 좀더 세분화 되고 분리되어 있지만 보기 편하라고,
코드들을 합쳐 보았습니다.
그냥 이렇게 사용하는 거구나 라고 알고 계시면 될듯 합니다.
'공부방 > iOS' 카테고리의 다른 글
AsyncSubject, PublishSubject, BehaviorSubject, ReplaySubject (0) | 2019.07.24 |
---|---|
iOS Firebase Analytics apply (iOS Firebase Analytics 적용) (0) | 2019.07.15 |
iOS Realm apply (iOS realm 적용) (0) | 2019.07.12 |
Using iOS crashlytics method (crashlytics 함수 사용법) (0) | 2019.07.12 |
iOS fabric crashlytics install (Step2) (0) | 2019.07.11 |
행복한 코딩을 위하여!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!