SwiftEndpoint 是一个轻量级的库,为在 iOS 和 macOS 应用程序中实现网络功能提供更高级别的抽象。
Endpoint
是一个泛型函数,可以将某种 Request
转换为某种 Response
发布者 (publisher)
typealias Endpoint<Request, Response> = (Request) -> AnyPublisher<Response, Error>
一组帮助程序,用于基于原生 Foundation 的网络构建 API 客户端。
urlEndpoint
函数创建一个使用 Foundation 网络的 Endpoint
func urlEndpoint<Request, Response>(
requestFactory: @escaping URLRequestFactory<Request>,
publisherFactory: @escaping URLResponsePublisherFactory,
responseValidator: @escaping URLResponseValidator,
responseDecoder: @escaping URLResponseDecoder<Response>
) -> Endpoint<Request, Response>
URLRequestFactory<Request>
是一个泛型函数,可以将某种 Request
转换为 URLRequest
,可以选择抛出错误
typealias URLRequestFactory<Request> = (Request) throws -> URLRequest
URLResponsePublisherFactory
是一个函数,可以将 URLRequest
转换为 URLResponsePublisher
typealias URLResponsePublisherFactory = (URLRequest) -> URLResponsePublisher
便捷的扩展允许将 URLSession
用作 URLResponsePublisherFactory
extension URLSession {
var urlResponsePublisherFactory: URLResponsePublisherFactory { get }
}
URLResponsePublisher
是一个 combine 发布者,发出网络响应或以网络错误失败
typealias URLResponsePublisher = AnyPublisher<(data: Data, response: URLResponse), Error>
URLResponseValidator
是一个函数,用于验证响应 Data
和 URLResponse
,可以选择抛出验证错误
typealias URLResponseValidator = (Data, URLResponse) throws -> Void
URLResponseDecoder<Response>
是一个泛型函数,可以将响应 Data
和 URLResponse
转换为某种 Response
,可以选择抛出解码错误
typealias URLResponseDecoder<Response> = (Data, URLResponse) throws -> Response
SwiftEndpoint 兼容 Swift Package Manager。 您可以将其作为依赖项添加到您的 Xcode 项目 或 swift 包。
运行测试
swift test
在 Xcode 中开发
swift package generate-xcodeproj
open -a SwiftEndpoint.xcodeproj
版权所有 © 2020 Dariusz Rybicki Darrarski
许可证: GNU GPLv3