这个项目整理 Swift 网络层的常见写法:请求类型、响应包装、错误映射、鉴权刷新、分页和 async 状态管理。
请求层边界
请求对象描述路径、方法、参数和响应类型。调用方不拼 URL,不碰 JSON 字典,也不解析业务 code。
protocol APIRequest {
associatedtype Response: Decodable
var path: String { get }
var method: HTTPMethod { get }
}
输出稳定状态
ViewModel 消费的是 Result 或明确的 State,而不是散落的 loading、error、data 三个变量。状态越集中,页面越不容易互相打架。