IDE & Framework/iOS

Alamofire를 통해 POST/GET 통신하기

Greensky0026 2021. 4. 20. 19:04
반응형

 Alamofire는 swift의 Foundation networking을 기반으로 한 http 네트워킹 라이브러리 입니다.

네트워크 작업을 단순화 시켜주어서 굉장히 쓰기 편리합니다.

 

 굉장히 다양한 기능이 있는데요, 그중 GET/POST 방식으로 http통신을 해서

응답값을 받아오는것 까지 구현해보도록 하겠습니다.

 

Alamofire은 크게 다음과같이 두가지로 나뉩니다.

 

request

  • url : 메시지를 보내고 응답을 요청할 인터넷 URL 주소
  • method : .get (post사용시에는 아이에 다른 방법으로 사용합니다.)
  • parameters : 요청시 같이 보낼 파라미터
  • encoding : 사용할 encoding 방식 (URL, JSON, PropertyList 세가지 지원)
  • hearder : [String: String] 형태로 헤더를 설정해줍니다. 
  • validate(statusCode: 200..<300) : 200~299범위의 HTTP Status Code를 가져오는데요,
    200은 ok, 201은 create, 202는 accpted등 통신의 성공/실패를 알려주는 HTTP Status Code의 범위입니다.
    HTTP Status Code가 궁금하시면 여기를 보셔서 참고하시면 되겠습니다.

response

  • request
  • response
  • data
  • error

더 많은 정보는 github.com/Alamofire/Alamofire 여기서 확인하시면 되겠습니다.

 

jsonplaceholder.typicode.com/todos/1 을 사용해서 값을 가져와 보겠습니다.

 

get 방식

    func getTest() {
        let url = "https://jsonplaceholder.typicode.com/todos/1"
        AF.request(url,
                   method: .get,
                   parameters: nil,
                   encoding: URLEncoding.default,
                   headers: ["Content-Type":"application/json", "Accept":"application/json"])
            .validate(statusCode: 200..<300)
            .responseJSON { (json) in
                //응답처리
                print(json)
        }
    }

 

    func getTest2(){
        let url = "https://jsonplaceholder.typicode.com/todos/1"
        let alamo = AF.request(url, method: .get, parameters: nil).validate(statusCode: 200..<300)

        alamo.responseJSON() { response in
            switch response.result{
            case .success(let value):
                if let jsonObj = value as? [String: Any]{
                    print("데이터의 갯수: \(jsonObj.count)")
                    if let userId = jsonObj["userId"]{
                        print("userId = \(userId)")
                    }
                    if let id = jsonObj["id"]{
                        print("id = \(id)")
                    }
                    if let title = jsonObj["title"]{
                        print("title = \(title)")
                    }
                    if let completed = jsonObj["completed"]{
                        print("completed = \(completed)")
                    }
                    
                }
            case .failure(let error):
                print("error: \(String(describing: error.errorDescription))")
            }
        }
    }

 

post 방식

https://ptsv2.com 을 이용해 post를 날려보겠습니다.

func postTest() {
        //Toilet: g160j-1618823856
        let url = "https://ptsv2.com/t/g160j-1618823856/post"
        var request = URLRequest(url: URL(string: url)!)
        request.httpMethod = "POST"
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.timeoutInterval = 10
        // POST 로 보낼 정보
        let params = ["id":"아이디", "pw":"패스워드"] as Dictionary
        
        // httpBody 에 parameters 추가
        do {
            try request.httpBody = JSONSerialization.data(withJSONObject: params, options: [])
        } catch {
            print("http Body Error")
        }
        AF.request(request).responseString { (response) in
            switch response.result {
            case .success:
                print("POST 성공")
            case .failure(let error):
                print("error : \(error.errorDescription!)")
            }
        }
    }

 

 

 

 data를 다운받는 기능까지가 대표적으로 사용하는 기능인데요,

데이터를 주고받을때 유용한 JSON 파싱은 다음기회에 포스팅해보도록 하겠습니다.

 


공부에 도움을 준 사이트들

 

gonslab.tistory.com/14

 

iOS Swift 라이브러리 Alamofire 사용하기

안녕하세요 Gons 입니다. 오늘은 많은 분들이 기다리셨던 Alamofire 입니다. Alamofire 는 http 통신을 하기위해서 사용하는 것인데요. GET , POST , Download , DELETE , PATCH 등 다양한 http 통신을 할 수 있어..

gonslab.tistory.com

 

www.zehye.kr/ios/2020/04/01/12iOS_alamofire/

 

Alamofire란 무엇이고 어떻게 사용하는가? · 지혜의 개발공부로그

Alamofire란 무엇이고 어떻게 사용하는가? 01 Apr 2020 | iOS 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다. 참고한 블로그 간단하게… iOS HTTP통신을 할 때 필수 라이

www.zehye.kr

 

duwjdtn11.tistory.com/557

 

[iOS] Alamofire 소개 및 데모 예제

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

duwjdtn11.tistory.com

 

aircook.tistory.com/entry/Alamofire-간단하게-사용하기

 

Alamofire 간단하게 사용하기

Rest API를 호출하기 위해 가장 유명한 Swift 라이브러리인 Alamofire를 사용해보겠습니다. Alamofire에 대한 정보는 다음 주소에서 확인할 수 있습니다. https://github.com/Alamofire/Alamofire Alamofire/Alamo..

aircook.tistory.com

github.com/Alamofire/Alamofire

 

Alamofire/Alamofire

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

github.com

 

반응형