API客户端库的HTTPClient协议
import HTTPClient
import HTTPClientFoundation
import Foundation
let api = GitHubAPI(
token: <#GITHUB_TOKEN#>,
httpClient: .urlSession(.shared)
)
let user = api.user(id: <#user_id#>)
struct GitHubAPI<HTTPClient: HTTPClientProtocol> {
let token: String
let httpClient: HTTPClient
func user(id: String) async throws -> User {
let request = HTTPRequest(
method: .get,
url: url,
headerFields: [
.authorization: token
]
)
let (data, response) = try await httpClient.execut(request, body: nil)
let user = try JSONDecoder().decode(User.self, from: data)
return user
}
}