기간
2022/03/14 → 2022/03/20
전공
소프트웨어학부 컴퓨터과학전공
학번
1815364
이름
@김도이
https://github.com/Alamofire/Alamofire
https://github.com/Alamofire/Alamofire
Alamofire는 Swift로 쓰인 HTTP 네트워킹 라이브러리
JSON 파싱 등 네트워킹을 위한 다양한 메서드를 제공
애플에서 기본으로 제공하는 URLSession을 통해서도 HTTP 통신이 가능하지만 Alamofire를 쓰는 이유는 코드의 간소화. 여러 기능을 직접 구축하지 않아도 (e.g. Status 검증 코드 등) 사용할 수 있도록 제공하는 라이브러리.
Alamofire를 이용한 코드의 길이가 눈에 띄게 짧은 것을 확인할 수 있다.
// Alamofire
AF.request("<https://api.mywebserver.com/v1/board>", method: .get, parameters: ["title": "New York Highlights"])
.validate(statusCode: 200..<300)
.responseDecodable { (response: DataResponse) in
switch response.result {
case .success(let board):
print("Created board title is \\(board.title)") // New York Highlights
case .failure(let error):
print("Board creation failed with error: \\(error.localizedDescription)")
}
}
// URLSession
enum Error: Swift.Error {
case requestFailed
}
// Build up the URL
var components = URLComponents(string: "<https://api.mywebserver.com/v1/board>")!
components.queryItems = ["title": "New York Highlights"].map { (key, value) in
URLQueryItem(name: key, value: value)
}
// Generate and execute the request
let request = try! URLRequest(url: components.url!, method: .get)
URLSession.shared.dataTask(with: request) { (data, response, error) in
do {
guard let data = data,
let response = response as? HTTPURLResponse, (200 ..< 300) ~= response.statusCode,
error == nil else {
// Data was nil, validation failed or an error occurred.
throw error ?? Error.requestFailed
}
let board = try JSONDecoder().decode(Board.self, from: data)
print("Created board title is \\(board.title)") // New York Highlights
} catch {
print("Board creation failed with error: \\(error.localizedDescription)")
}
}