꾸준히 안타치기

Alamofire 사용법 본문

iOS/서버연동

Alamofire 사용법

글자줍기 2022. 3. 15. 22:27
반응형

Alamofire

  • 파운데이션 프레임워크에서는 API호출하기 위해 URLRequest객체를 만들어서 사용했지만, Alamoifire는 더욱 간편하게 접근 할 수 있도록 함.
  • Alamofire 는 비동기 기반으로 네트워크 응답을 처리하기 때문에, 응답 메시지를 reponse 메소드의 결과값으로 반환받을 수 없다. 서버에서 응답이 도착했을때 실행될 로직을 클로저로 미리작성해 , reponse 메소드에 넣어주어야 한다(콜백 함수).
  • Alamofire 는 서버에서 응답이 도착하면 이를 DataResponse타입의 객체로 처리한다음, 이를 클로저의 매개변수에 담아 호출한다.
//현재 시간 GET호출
func callCurrentTime() {     
AF.request("API URL. AF.request는 매개변수로 string을 받는다.").responseString() { response in
                switch response.result {
                case .success:
                    self.currentTime = try! response.result.get()
                case .failure(let error):
                    print(error)
                    return
                }
            }
    }

//POST 방식으로 Echo API 호출(httpbody 방식)
func post() {
        // 1. 전송할 값 준비
        let apiURL = "api url string"
                let userId = self.userId
        let userPassword = self.userPassword
        let param: Parameters = [
            "userId": userId,
            "userPassword": userPassword]
        AF.request(apiURL, method: .post, parameters: param,
        encoding: URLEncoding.httpBody)
        .responseJSON() {
        response in
            switch response.result {
            case .success:
                if let jsonObject = try! response.result.get() as? [String: Any] {
                    let result = jsonObject["result"] as? String
                    let timestamp = jsonObject["timestamp"] as? String
                    let userId = jsonObject["userId"] as? String
                    let userPassword = jsonObject["userPassword"] as? String

                    self.parsedResponse = "요청결과: \(result!)" + "\n"+ "응답시간: \(timestamp!)" + "\n"+ "요청방식: x-www-form-urlencoded" + "\n"+ "유저 ID : \(userId!)" + "\n"+ "유저 password: \(userPassword!)" + "\n"
                }
            case .failure(let error):
                print(error)
                return
            }
        }
    }
  • 파라미터
  • method : 생략할 시 GET방식
  • parameters : 항상 딕셔너리형태
  • encoding : 대표적으로 사용되는 구조체는 URLEncoding구조체로, 이 구조체에는 세가지 인코딩 타입이 정적변수로 선언되어있다. JSON방식으로 전송할때는 인코딩 타입으로 JSONEncoding을 사용해야한다.
  • headers : HTTP 메시지에 별도로 헤더를 추가하고 싶을 경우에는 header 매개변수를 사용한다. 딕셔너리형태
URLEncoding 타입3가지 JSONEncoding
.methodDependent (메소드에 따라 인코딩 타입이 자동으로 결정) .JSONEncoding.default
.queryString (GET 전송에서 사용되는 방식)  
.httpBody (POST 전송에서 사용되는 방식)  

Response

responsString() - 응답메시지의 본문을 문자열로 처리한 후 전달합니다.

responsJSON() - 응답메시지의 본문을 JSON객체로 변환하여 전달합니다.

responsData()-  응답메시지의 본문을 바이너리 데이터로 변환하여 전달합니다.

 

response.result.value를 그대로 출력하면 Any타입으로 처리된 JSON객체의 본문이 그대로 출력되고, 이를[String: Any]타입의

딕셔너리 객체로 캐스팅하면 개별값을 추출할 수 있다.

ATS설정 필요

내부적으로  URLSession객체를 사용하기 때문에,  HTTPS프로토콜을 지원하지 않는 실습용 API서버와 통신할때는 ATS설정이 필요하다. 모든 도메인에 대한 HTTP통신 허용. 특정 도메인만 선택적으로 통신을 허용하는 것 

 

GitHub - Alamofire/Alamofire: Elegant HTTP Networking in Swift

Elegant HTTP Networking in Swift. Contribute to Alamofire/Alamofire development by creating an account on GitHub.

github.com

https://furang-note.tistory.com/33

 

[iOS] Alamofire로 API 호출하기 (+ CocoaPods 사용법)

나는 왠만하면 외부 라이브러리는 안 쓰고 개발하려는 편인데 딱 한가지 예외로 거의 필수적으로 사용하는게 있다. 그건 바로 Alamofire. API를 호출하지 않는 앱은 극히 드물기 때문에 내가 개발하

furang-note.tistory.com

 codable사용예제

 

https://learn-hyeoni.tistory.com/45

 

Swift에서 JSON Parsing하기 - JSONSerialization vs Codable

Swift에서 JSON Parsing하기 - JSONSerialization vs Codable 해당 내용은 회사에서 전사 세미나를 준비한 내용입니다. 오류가 있거나 수정되어야 할 내용이 있다면 언제든지 알려주세요. 저는 현재 챗봇 빌더

learn-hyeoni.tistory.com

 

 

직접 파싱한것 예제 

https://to-remember-for-100-years.tistory.com/132?category=965454 

 

앱 개발 기록 5. Alamofire

Alamofire는 iOS의 REST API 통신을 지원해주는 라이브러리이다. 기본 Url 뒤에는 ?을 사용하여 기본인자 정보들을 적고, 기본인자사이에는 &을 붙여 구분지어준다. 그러나 제공하는 api마다 상세한 방

to-remember-for-100-years.tistory.com

 

https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#using-alamofire

 

GitHub - Alamofire/Alamofire: Elegant HTTP Networking in Swift

Elegant HTTP Networking in Swift. Contribute to Alamofire/Alamofire development by creating an account on GitHub.

github.com

 

https://jiseobkim.github.io/swift/2018/07/21/swift-Alamofire%EC%99%80-Codable.html

 

Swift - Alamofire와 Codable

나만의 공간

jiseobkim.github.io

Alamofire

https://duwjdtn11.tistory.com/557

 

[iOS] Alamofire 소개 및 데모 예제

Alamofire Alamofire 를 사용해보면서 공부한 내용을 정리한다. Alamofire 는 Swift 에서 HTTP 통신을 하기 위해 이용되는 대표적인 오픈소스 라이브러리다. Alamofire 가 제공하는 간략한 기능 소개는 아래와

duwjdtn11.tistory.com

codable

https://duwjdtn11.tistory.com/562

 

[iOS] Codable and JSON Encoder & Decoder

Codable 그리고 JSON Encoder & Decoder Codable typealias Codable = Decodable & Encodable 인코딩 : 정보의 형태 또는 형식을 다른 형태, 형식으로 변환하는 처리 방식 디코딩 : 인코딩의 반대 작업 Codable 은..

duwjdtn11.tistory.com

 

반응형
Comments