[swift] Swift로 HTTP 로그인 요청 보내기

Swift는 강력한 프로그래밍 언어로서, HTTP 요청을 보내는 기능을 제공합니다. 이번 블로그 포스트에서는 Swift를 사용하여 HTTP 로그인 요청을 보내는 방법을 알아보겠습니다.

URLSession을 사용한 HTTP 요청

Swift에서 HTTP 요청을 보내기 위해 주로 URLSession을 활용합니다. URLSession은 HTTP 요청을 보내고, 응답을 받는 역할을 담당합니다.

import Foundation

func loginRequest(username: String, password: String) {
    let urlString = "http://example.com/login"
    let url = URL(string: urlString)!
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    
    let parameters = ["username" : username, "password" : password]
    request.httpBody = parameters.queryString().data(using: .utf8)
    
    let session = URLSession.shared
    
    let task = session.dataTask(with: request) { (data, response, error) in
        if let error = error {
            print("Error: \(error.localizedDescription)")
            return
        }
        
        guard let data = data else {
            print("Data is nil")
            return
        }
        
        // 데이터를 처리하는 로직을 추가하세요
    }
    
    task.resume()
}

위 예제에서는 loginRequest 함수를 정의하여 HTTP 로그인 요청을 보내고 있습니다. URLRequesthttpMethod 속성을 "POST"로 설정한 후, 요청 바디에는 사용자 이름(username)과 비밀번호(password) 파라미터를 담아 전송하고 있습니다.

응답이 성공적으로 받아지면, data, response, error 파라미터가 전달됩니다. 데이터 처리 로직은 필요에 따라 추가하시면 됩니다.

데이터 파라미터를 쿼리 스트링으로 변환하는 함수 활용

위 예제에서는 parameters.queryString() 함수를 사용하여 데이터 파라미터를 쿼리 스트링으로 변환하고 있습니다. 이 함수는 다음과 같이 정의됩니다.

extension Dictionary {
    func queryString() -> String {
        var output: String = ""
        
        for (key, value) in self {
            if let key = key as? String, let value = value as? String {
                output += "\(key)=\(value)&"
            }
        }
        
        return String(output.dropLast())
    }
}

이 함수를 사용하면 딕셔너리 형태의 데이터를 쿼리 스트링으로 변환하여 사용할 수 있습니다.

Reference