투케이2K

142. (ios/swift) Alamofire ver_5 아라모파이어 http 통신 get , post , post body json 요청 실시 본문

IOS

142. (ios/swift) Alamofire ver_5 아라모파이어 http 통신 get , post , post body json 요청 실시

투케이2K 2022. 4. 4. 14:33

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

    // MARK: - [Get 방식 http 요청 실시]
    func getRequest(){
        
        /*
        // -----------------------------------------
        [getRequest 메소드 설명]
        // -----------------------------------------
        1. 사전 spm 매니저 사용해 Alamofire 라이브러리 설치 필요 :
           https://github.com/Alamofire/Alamofire
        // -----------------------------------------
        2. http 허용 info plist : App Transport Security Settings >> Allow Arbitrary Loads >> YES
        // -----------------------------------------
        3. import 추가 : import Alamofire
        // -----------------------------------------
        */
        
        
        // [http 요청 주소 지정]
        let url = "https://jsonplaceholder.typicode.com/posts?"
        
        
        // [http 요청 헤더 지정]
        let header : HTTPHeaders = [
            "Content-Type" : "application/json"
        ]
        
        
        // [http 요청 파라미터 지정 실시]
        let queryString : Parameters = [
            "userId" : 1,
            "id" : 1
        ]
        
        
        // [http 요청 수행 실시]
        print("")
        print("====================================")
        print("[\(self.ACTIVITY_NAME) >> getRequest() :: Get 방식 http 요청 실시]")
        print("-------------------------------")
        print("주 소 :: ", url)
        print("-------------------------------")
        print("데이터 :: ", queryString.description)
        print("====================================")
        print("")
        
        AF.request(
            url, // [주소]
            method: .get, // [전송 타입]
            parameters: queryString, // [전송 데이터]
            encoding: URLEncoding.queryString, // [인코딩 스타일]
            headers: header // [헤더 지정]
        )
        .validate(statusCode: 200..<300)
        .responseData { response in
            switch response.result {
            case .success(let res):
                do {
                    print("")
                    print("====================================")
                    print("[\(self.ACTIVITY_NAME) >> getRequest() :: Get 방식 http 응답 확인]")
                    print("-------------------------------")
                    print("응답 코드 :: ", response.response?.statusCode ?? 0)
                    print("-------------------------------")
                    print("응답 데이터 :: ", String(data: res, encoding: .utf8) ?? "")
                    print("====================================")
                    print("")
                    
                    // [비동기 작업 수행]
                    DispatchQueue.main.async {
                        
                    }
                }
                catch (let err){
                    print("")
                    print("====================================")
                    print("[\(self.ACTIVITY_NAME) >> getRequest() :: Get 방식 http 응답 확인]")
                    print("-------------------------------")
                    print("catch :: ", err.localizedDescription)
                    print("====================================")
                    print("")
                }
                break
            case .failure(let err):
                print("")
                print("====================================")
                print("[\(self.ACTIVITY_NAME) >> getRequest() :: Get 방식 http 요청 실패]")
                print("-------------------------------")
                print("응답 코드 :: ", response.response?.statusCode ?? 0)
                print("-------------------------------")
                print("에 러 :: ", err.localizedDescription)
                print("====================================")
                print("")
                break
            }
        }
    }
    
    
    
    
    
    // MARK: - [Post 방식 http 요청 실시]
    func postRequest(){
        
        /*
        // -----------------------------------------
        [postRequest 메소드 설명]
        // -----------------------------------------
        1. 사전 spm 매니저 사용해 Alamofire 라이브러리 설치 필요 :
           https://github.com/Alamofire/Alamofire
        // -----------------------------------------
        2. http 허용 info plist : App Transport Security Settings >> Allow Arbitrary Loads >> YES
        // -----------------------------------------
        3. import 추가 : import Alamofire
        // -----------------------------------------
        */
        
        
        // [http 요청 주소 지정]
        let url = "https://jsonplaceholder.typicode.com/posts?"
        
        
        // [http 요청 헤더 지정]
        let header : HTTPHeaders = [
            "Content-Type" : "application/json"
        ]
        
        
        // [http 요청 파라미터 지정 실시]
        let queryString : Parameters = [
            "userId" : 1,
            "id" : 1
        ]
        
        
        // [http 요청 수행 실시]
        print("")
        print("====================================")
        print("[\(self.ACTIVITY_NAME) >> postRequest() :: Post 방식 http 요청 실시]")
        print("-------------------------------")
        print("주 소 :: ", url)
        print("-------------------------------")
        print("데이터 :: ", queryString.description)
        print("====================================")
        print("")
        
        AF.request(
            url, // [주소]
            method: .post, // [전송 타입]
            parameters: queryString, // [전송 데이터]
            encoding: URLEncoding.queryString, // [인코딩 스타일]
            headers: header // [헤더 지정]
        )
        .validate(statusCode: 200..<300)
        .responseData { response in
            switch response.result {
            case .success(let res):
                do {
                    print("")
                    print("====================================")
                    print("[\(self.ACTIVITY_NAME) >> postRequest() :: Post 방식 http 응답 확인]")
                    print("-------------------------------")
                    print("응답 코드 :: ", response.response?.statusCode ?? 0)
                    print("-------------------------------")
                    print("응답 데이터 :: ", String(data: res, encoding: .utf8) ?? "")
                    print("====================================")
                    print("")
                    
                    // [비동기 작업 수행]
                    DispatchQueue.main.async {
                        
                    }
                }
                catch (let err){
                    print("")
                    print("====================================")
                    print("[\(self.ACTIVITY_NAME) >> postRequest() :: Post 방식 http 응답 확인]")
                    print("-------------------------------")
                    print("catch :: ", err.localizedDescription)
                    print("====================================")
                    print("")
                }
                break
            case .failure(let err):
                print("")
                print("====================================")
                print("[\(self.ACTIVITY_NAME) >> postRequest() :: Post 방식 http 요청 실패]")
                print("-------------------------------")
                print("응답 코드 :: ", response.response?.statusCode ?? 0)
                print("-------------------------------")
                print("에 러 :: ", err.localizedDescription)
                print("====================================")
                print("")
                break
            }
        }
    }
    
    
    
    
    
    // MARK: - [Post Body Json Request 방식 http 요청 실시]
    func postBodyJsonRequest(){
        
        /*
        // -----------------------------------------
        [postBodyJsonRequest 메소드 설명]
        // -----------------------------------------
        1. 사전 spm 매니저 사용해 Alamofire 라이브러리 설치 필요 :
           https://github.com/Alamofire/Alamofire
        // -----------------------------------------
        2. http 허용 info plist : App Transport Security Settings >> Allow Arbitrary Loads >> YES
        // -----------------------------------------
        3. import 추가 : import Alamofire
        // -----------------------------------------
        */
        
        
        // [http 요청 주소 지정]
        let url = "https://jsonplaceholder.typicode.com/posts"
        
        
        // [http 요청 헤더 지정]
        let header : HTTPHeaders = [
            "Content-Type" : "application/json"
        ]
        
        
        // [http 요청 파라미터 지정 실시]
        let bodyData : Parameters = [
            "userId" : 1,
            "id" : 1
        ]
        
        
        // [http 요청 수행 실시]
        print("")
        print("====================================")
        print("[\(self.ACTIVITY_NAME) >> postBodyJsonRequest() :: Post Body Json 방식 http 요청 실시]")
        print("-------------------------------")
        print("주 소 :: ", url)
        print("-------------------------------")
        print("데이터 :: ", bodyData.description)
        print("====================================")
        print("")
        
        AF.request(
            url, // [주소]
            method: .post, // [전송 타입]
            parameters: bodyData, // [전송 데이터]
            encoding: JSONEncoding.default, // [인코딩 스타일]
            headers: header // [헤더 지정]
        )
        .validate(statusCode: 200..<300)
        .responseData { response in
            switch response.result {
            case .success(let res):
                do {
                    print("")
                    print("====================================")
                    print("[\(self.ACTIVITY_NAME) >> postBodyJsonRequest() :: Post Body Json 방식 http 응답 확인]")
                    print("-------------------------------")
                    print("응답 코드 :: ", response.response?.statusCode ?? 0)
                    print("-------------------------------")
                    print("응답 데이터 :: ", String(data: res, encoding: .utf8) ?? "")
                    print("====================================")
                    print("")
                    
                    // [비동기 작업 수행]
                    DispatchQueue.main.async {
                        
                    }
                }
                catch (let err){
                    print("")
                    print("====================================")
                    print("[\(self.ACTIVITY_NAME) >> postBodyJsonRequest() :: Post Body Json 방식 http 응답 확인]")
                    print("-------------------------------")
                    print("catch :: ", err.localizedDescription)
                    print("====================================")
                    print("")
                }
                break
            case .failure(let err):
                print("")
                print("====================================")
                print("[\(self.ACTIVITY_NAME) >> postBodyJsonRequest() :: Post Body Json 방식 http 요청 실패]")
                print("-------------------------------")
                print("응답 코드 :: ", response.response?.statusCode ?? 0)
                print("-------------------------------")
                print("에 러 :: ", err.localizedDescription)
                print("====================================")
                print("")
                break
            }
        }
    }

반응형
Comments