审查生成的 URLSession 客户端

来自 URLSession
Swift 6.3.3 高级 8分钟 找出 4处问题

根据传输、安全和重试契约审查这段生成的用户加载器。

使用 Bearer 认证获取一个用户;只接受 2xx 响应,保留解码失败,复用传输资源,GET 最多尝试三次,并且绝不记录凭证。

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
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误