반응형
Greensky0026
삽질러의 대환장 공사판
Greensky0026
전체 방문자
오늘
어제
  • 분류 전체보기 (241)
    • Language (56)
      • JAVA (13)
      • Swift (38)
      • Kotlin (4)
      • Dart (0)
      • PHP (0)
      • JavaScript (1)
    • IDE & Framework (92)
      • Spring (10)
      • Android (48)
      • iOS (8)
      • NodeJS (1)
      • CodeIgniter (3)
      • Flutter (1)
      • 분류중 (18)
    • Infra (8)
    • Database (12)
    • VCS (4)
    • Debug Log (34)
      • java (7)
      • swift (3)
      • Android (9)
      • Web (7)
      • 삽질기 (7)
    • Others (19)
      • 코딩테스트 풀이 (0)
      • IT 이야기 (18)
    • 쉼터 (2)
    • 개발공부 (14)
      • Network (1)
      • 자료구조와 알고리즘 (2)
      • Code design (8)
      • ETC (1)
      • 아카이브 (1)

블로그 메뉴

    공지사항

    • 프로그래머스 코딩 테스트 관련글 비공개 처리

    인기 글

    태그

    • 공부
    • Java
    • xcode
    • 코딩테스트
    • reduce
    • 구축
    • swfit
    • map
    • kotlin
    • JSP
    • 프로그래머스
    • ios
    • level1
    • 개발
    • 타입
    • 예제
    • 프로그래밍
    • swift
    • Android
    • IT

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Greensky0026

    삽질러의 대환장 공사판

    Alamofire를 통해 POST/GET 통신하기
    IDE & Framework/iOS

    Alamofire를 통해 POST/GET 통신하기

    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

     

    반응형
    저작자표시 (새창열림)

    'IDE & Framework > iOS' 카테고리의 다른 글

    ios Storyboard간 이동  (0) 2021.04.21
    m1 기반 mac에서 cocoapod 사용하기  (0) 2021.04.20
    Storyboard 사용해보기  (0) 2021.04.15
    ios Stroyboard란?  (0) 2021.04.14
    [기상알리미] application preview  (0) 2021.04.13
      'IDE & Framework/iOS' 카테고리의 다른 글
      • ios Storyboard간 이동
      • m1 기반 mac에서 cocoapod 사용하기
      • Storyboard 사용해보기
      • ios Stroyboard란?
      Greensky0026
      Greensky0026
      점이 모여 선이 된다. 내 삽질도 언젠간 거대한 지하 도시가 되겠지!

      티스토리툴바