How do I fetch data with async/await and URLSession?

Fetching data with async/await and URLSession is a modern way to handle networking tasks in Swift. This approach simplifies asynchronous code and enhances readability.

async/await, URLSession, Swift, networking, asynchronous programming

This guide provides an example of using async/await with URLSession in Swift to fetch data efficiently and effectively.


        let url = URL(string: "https://api.example.com/data")!

        func fetchData() async throws -> Data {
            let (data, response) = try await URLSession.shared.data(from: url)
            
            guard let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) else {
                throw NSError(domain: "Invalid response", code: 0, userInfo: nil)
            }
            return data
        }

        Task {
            do {
                let data = try await fetchData()
                // Process the fetched data
                print("Fetched data: \(data)")
            } catch {
                print("Error fetching data: \(error)")
            }
        }
    

async/await URLSession Swift networking asynchronous programming