[iOS/Swift] Alamofire

임주희·2022년 10월 15일
0

Alamofire

  • Swift 기반의 HTTP 네트워킹 라이브러리
  • 네트워킹 로직 단순화, 네트워킹을 위한 다양한 메서드 제공
  • 코드의 간소화, 가독성이 높고, 여러 기능을 직접 구축하지 않아도 쉽게 사용 가능

👉 Alamofire GitHub 바로가기
👉 프로젝트에 Alamofire 추가하기(SPM)


이전 URL Session을 사용하여 작성한 코드를 Alamofire로 작성 해보자.

GET

Query parameters가 포함된 GET 통신

[GET] https://reqres.in/api/users?page=2

let url: String = "https://reqres.in/api/users"
let parameters: Parameters = ["page" : 2]

AF.request(url, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: nil)
    .validate(statusCode: 200..<300)
    .responseData { response in
        
        switch response.result {
        case let .success(data): // 요청 성공
            
            guard let userList: UserListReponse = try? JSONDecoder().decode(UserListReponse.self, from: data) else { 
            	debugPrint("decode 실패")
            	return 
            }
            debugPrint(userList)
            
        case let .failure(error): //요청 실패
            debugPrint(error)
        }
    }

POST

url: https://reqres.in/api/login
request body :
{ "email": "eve.holt@reqres.in",
"password": "cityslicka" }

let url: String = "https://reqres.in/api/login"
let parameters: Parameters = ["email": "eve.holt@reqres.in",
                              "password": "cityslicka"]

AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil)
    .validate(statusCode: 200..<300)
    .responseData { response in
        
        switch response.result {
        case let .success(data): //요청 성공
            
            guard let loginReponse: LoginResponse = try? JSONDecoder().decode(LoginResponse.self, from: data) else {
                debugPrint("decode 실패")
                return
            }
            debugPrint(loginReponse)
            
        case let .failure(error): //요청 실패
            debugPrint(error)
            
        }
    }

👉 훨씬 더 깔끔해진 모습을 확인할 수 있다.

0개의 댓글