Using Async Await 1

//
//  ContentView.swift
//  AsyncAwaitAPIDemo
//
//  Created by Joynal Abedin on 2/11/23.
//

import SwiftUI

struct ContentView: View {
    
    @State private var bookName: String = ""
    
    var body: some View {
        Text(bookName)
        Button {
            Task {
                let (data, _) = try await URLSession.shared.data(from: URL(string: "https://devilarticle.com/api/LibraryService/GetAllBook")!)
                let decodedResponse = try? JSONDecoder().decode(Response.self, from: data)
                bookName = decodedResponse?.data[0].bookName ?? "can not fetch"
            }
        } label: {
            Text("Fetch bookName")
        }
    }
}

#Preview {
    ContentView()
}

Response Model

//
//  Response.swift
//  DataTaskAPIDemo
//
//  Created by Joynal Abedin on 1/11/23.
//

import Foundation

struct Response: Codable {
    var responseCode: Int
    var result: String
    var errormessage: String?
    var data: [BookList]
}

struct BookList: Codable {
    var id: Int
    var bookId: Int
    var bookName: String
    var availableCopyNumber: Int
}