[swift] Swift로 JSON API 요청 보내기

Swift는 강력한 언어로서 JSON API와 통신하기 위한 기능을 제공합니다. 이 기능을 사용하여 JSON 데이터를 가져오고 보낼 수 있습니다. 이번 블로그에서는 Swift로 JSON API 요청을 보내는 방법에 대해 알아보겠습니다.

URLSession을 사용하여 요청 보내기

Swift에서 JSON API 요청을 보내기 위해서는 URLSession을 사용해야 합니다. URLSession을 통해 HTTP 요청을 만들고 보낼 수 있습니다.

let url = URL(string: "https://api.example.com/data")!
        
URLSession.shared.dataTask(with: url) { (data, response, error) in
    if let error = error {
        print("Error: \(error.localizedDescription)")
        return
    }
    
    guard let data = data else {
        print("No data received")
        return
    }

    // 데이터를 JSON으로 파싱하여 사용
    do {
        let json = try JSONSerialization.jsonObject(with: data, options: [])
        // JSON 데이터를 사용하는 로직 구현
    } catch {
        print("JSON parsing error: \(error.localizedDescription)")
    }
}.resume()

위의 코드에서는 URLSession.shared.dataTask(with:completionHandler:) 메서드를 사용하여 API 요청을 만들고 보냈습니다. 요청에 대한 응답이 도착하면 completion handler가 호출되므로, 결과를 처리할 수 있습니다. 데이터가 성공적으로 받아지면 JSON으로 파싱하여 사용할 수 있습니다.

요청에 매개변수 추가하기

API 요청에 매개변수를 추가해야 하는 경우, URLComponents를 사용하여 요청의 URL에 매개변수를 추가할 수 있습니다. 아래의 예제는 query 매개변수를 추가하는 방법을 보여줍니다.

var components = URLComponents(string: "https://api.example.com/data")!
components.queryItems = [
    URLQueryItem(name: "query", value: "example")
]

let url = components.url!
        
URLSession.shared.dataTask(with: url) { (data, response, error) in
    // ...
}.resume()

위의 코드에서는 URLComponents를 사용하여 query 매개변수를 추가하였습니다. 그 후, url 프로퍼티를 사용하여 최종적인 URL을 얻을 수 있습니다.

요청에 HTTP 메서드 지정하기

API 요청을 보낼 때, 다양한 HTTP 메서드를 사용할 수 있습니다. URLRequest를 사용하여 메서드를 지정할 수 있습니다. 예를 들어, POST 메서드를 사용하여 데이터를 보내는 방법은 다음과 같습니다.

let url = URL(string: "https://api.example.com/data")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
        
URLSession.shared.dataTask(with: request) { (data, response, error) in
    // ...
}.resume()

위의 코드에서는 httpMethod 프로퍼티를 사용하여 POST 메서드를 지정하였습니다.

로그인을 위한 헤더 추가하기

인증된 요청을 보내기 위해서는 헤더에 인증 정보를 추가해야 합니다. URLRequest를 사용하여 헤더를 추가할 수 있습니다. 아래의 예제는 로그인을 위해 Authorization 헤더를 추가하는 방법을 보여줍니다.

let url = URL(string: "https://api.example.com/data")!
var request = URLRequest(url: url)
request.addValue("Bearer YOUR_AUTH_TOKEN", forHTTPHeaderField: "Authorization")
        
URLSession.shared.dataTask(with: request) { (data, response, error) in
    // ...
}.resume()

위의 코드에서는 addValue(_:forHTTPHeaderField:) 메서드를 사용하여 Authorization 헤더를 추가하였습니다.

결론

이번 블로그에서는 Swift를 사용하여 JSON API 요청을 보내는 방법에 대해 알아보았습니다. URLSession을 사용하여 요청을 보내고, 매개변수 및 HTTP 메서드를 추가하고, 헤더를 설정하는 방법을 살펴보았습니다. Swift의 강력한 기능을 활용하여 다양한 JSON API와 통신할 수 있습니다.

더 자세한 내용은 Apple 공식 문서를 참고해주세요.