Alamofire:
- Swift기반의 HTTP네트워킹 라이브러리
- URLSession에 기반한 라이브러리
- 네트워킹 작업을 단순화 하고, 다양한 메서드와 JSON파싱등을 제공한다.
- 연결가능한 request, response를 제공하고 URL JSON 형태의 파라미터 인코딩 지원.
- file, data, String, multipart등 업로드 기능 제공
- HTTP response검증과 광범위한 단위테스트 및 통합테스트를 제공
URLSession 대신 Alamofire를 사용하는 이유
코드의 간소화, 가독성 측면에서 도움을 주고 여러 기능을 직접 구축하지 않아도 쉽게 사용할 수 있음
1. request메서드를 이용하여 HTTP요청을 할 수 있고, 전달인자를 이용하여 요청에 필요한 정보를 쉽게 설정할 수 있다.
open func request<Parameters: Encodable>(_ convertable: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoder: ParameterEncoder =
URLEncodedFromParameterEncoder .default,
headers: HTTPHeaders? = nil, i
nterceptor: RequestInterceptor? = nil) -> DataRequest
2. Alamofire HTTP Method
public struct HTTPMEthod: RawRepresentable, Equatable, Hashable{
public static let connect = HTTPMethod(rqwValue: "CONNECT")
public static let delete = HTTPMEthod(rawValue: "DELETE")
public static let get = HTTPMEthod(rawValue: "GET")
public static let head = HTTPMEthod(rawValue: "HEAD")
public static let options = HTTPMEthod(rawValue: "OPTIONS")
public static let patch = HTTPMEthod(rawValue: "PATCH")
public static let post = HTTPMEthod(rawValue: "POST")
public static let put = HTTPMEthod(rawValue: "PUT")
public static let trace = HTTPMEthod(rawValue: "trace")
public let rawValue: String
public init(rawValue: String){
self.rawValue = rawValue
}
}
AF.request("https://httpbin.org/get")
AF.request("https://httpbin.org/post", method: .post)
AF.request("https://httpbin.org/put", method: .put)
AF.request("https://httpbin.org/delete", method: .delete)
Alamofire에서는 요청에 대한 응답을 response메서드를 이용하여 handling한다
6개의 서로다른 메서드가 정의되어 있으며, 응답이 완료되면 completionHanler가 호출이 된다.
response메서드는 아래와 같이 request메서드를 체이닝 하여 사용되게된다.
AF.request("https://httpbin.org/get").responseJSON{ response in
debugPrint(response)
}