diff --git a/AIStudyApp/AIStudyApp.xcodeproj/project.xcworkspace/xcuserdata/Admin1.xcuserdatad/UserInterfaceState.xcuserstate b/AIStudyApp/AIStudyApp.xcodeproj/project.xcworkspace/xcuserdata/Admin1.xcuserdatad/UserInterfaceState.xcuserstate index 9612451..ef0ae12 100644 Binary files a/AIStudyApp/AIStudyApp.xcodeproj/project.xcworkspace/xcuserdata/Admin1.xcuserdatad/UserInterfaceState.xcuserstate and b/AIStudyApp/AIStudyApp.xcodeproj/project.xcworkspace/xcuserdata/Admin1.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/AIStudyApp/AIStudyApp/Core/Network/APIClient.swift b/AIStudyApp/AIStudyApp/Core/Network/APIClient.swift index 764bf9f..3386c18 100644 --- a/AIStudyApp/AIStudyApp/Core/Network/APIClient.swift +++ b/AIStudyApp/AIStudyApp/Core/Network/APIClient.swift @@ -56,20 +56,24 @@ actor APIClient { } if let body { - let encoded = try JSONEncoder().encode(AnyEncodable(body)) - request.httpBody = encoded - print("[APIClient] \(method) \(path) bodySize=\(encoded.count)") - } else { - print("[APIClient] \(method) \(path)") + request.httpBody = try JSONEncoder().encode(AnyEncodable(body)) } - let (data, response) = try await session.data(for: request) - print("[APIClient] \(method) \(path) -> response received") + let (data, response): (Data, URLResponse) + do { + (data, response) = try await session.data(for: request) + } catch { + print("[API] \(method) \(path) ❌ \(error.localizedDescription)") + throw APIError.networkError(error) + } guard let httpResponse = response as? HTTPURLResponse else { throw APIError.networkError(NSError(domain: "", code: -1)) } + let responseBody = String(data: data, encoding: .utf8)?.prefix(300) ?? "" + print("[API] \(method) \(path) → \(httpResponse.statusCode) | \(responseBody)") + switch httpResponse.statusCode { case 200, 201: return try decodeResponse(data)