// // DataView.swift // TheSwiftWeek // // Created by Ingo Rohlf on 24.10.25. // import SwiftUI import Foundation struct MenuCard: Codable { let items: [MenuItem] } struct MenuItem: Codable { let name: String let description: String let imageUrl: URL // let price: Double // enum CodingKeys: String, CodingKey { // case name // case detailText = "description" // } } struct DataView: View { let url2 = URL(string: "https://git.irohlf.de/api/swagger")! private let url = URL(string: "http://127.0.0.1:8080/menu")! private let jsonDecoder = JSONDecoder() @State private var menu = MenuCard(items: []) var body: some View { Text(url.absoluteString) .onAppear{ Task { let (data, response) = try await URLSession.shared.data(from: url) guard let string = String( data: data, encoding: .utf8 ) else { return } if let response = response as? HTTPURLResponse, response.statusCode == 200 { jsonDecoder.keyDecodingStrategy = .convertFromSnakeCase menu = try! jsonDecoder.decode(MenuCard.self, from: data) } print("fertig geladen") print(string) } } ForEach(menu.items, id: \.name) { item in HStack { AsyncImage(url: item.imageUrl, scale: 12) // Text(item.imageUrl.absoluteString ) Text(item.description ) } } } } #Preview { DataView() }