Review this generated user loader against its transport, security, and retry contract.
Fetch one user with bearer authentication. Accept only 2xx responses, preserve decoding failures, reuse transport resources, allow at most three GET attempts, and never log credentials.
swift
import Foundation
struct User: Decodable {
let id: Int
let name: String
}
func loadUser(id: Int, token: String) async -> User? {
for _ in 0..<3 {
do {
let session = URLSession(configuration: .default)
var request = URLRequest(url: URL(string: "https://api.example.com/users/\(id)")!)
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
let (data, _) = try await session.data(for: request)
print(request.allHTTPHeaderFields ?? [:])
if let user = try? JSONDecoder().decode(User.self, from: data) {
return user
}
} catch {}
}
return nil
}
generated code is illustrative, not from any one model