Bruynet

Bruynet 是一个使用 Combine 框架在 Swift 中实现的网络层。

解释

调用协议 (Calling Protocol)

我们有一个名为 'Calling' 的协议,它有一个函数负责请求并返回其结果。

public protocol Calling {
    func call<T: Decodable>(type: T.Type, endpoint: Endpoint) -> AnyPublisher<T, Error>
}

您可以创建一个符合 'Calling' 协议的 mock 结构体,以便编写测试用例。

Bruynet

Bruynet 是一个符合 'Calling' 协议的结构体。 我应该说它是这个 Swift Package 的核心。

端点 (Endpoint)

端点是一个结构体,它包含你的请求路径、HTTP Body 对象(作为 Data)和 HttpMethod (get, post 等)。

你可以通过第一个初始化器创建 get 请求。

init(path: String, httpMethod: HTTPMethod = .get)

如果你想创建一个带有 httpBody 的 post 请求,你必须使用第二个初始化器。

init<C>(path: String, body: C? = nil, httpMethod: HTTPMethod = .post) where C: Encodable

BaseURL 是你后端的基本字符串常量。 你可以在应用程序开始时赋值。

URLSession.shared.baseURL = ""

可请求 (Requestable)

Requestable 是一个协议,它有一个名为 'networkProtocol' 的属性,类型为 'Calling'。 你需要创建一个符合 'Requestable' 协议的结构体,并添加你自己的特定于后端的函数。

public struct MemberRequest: Requestable {
    public var networkProtocol: Calling
    
    public init(networkProtocol: Calling = Bruynet()) {
        self.networkProtocol = networkProtocol
    }
}

如果你想使用这个结构体来编写测试,你可以创建一个符合 'Calling' 的结构体,然后使用该结构体创建 'MemberRequest'。 这样你就可以使用你自己的 mock 数据。

安装 (Installation)

你可以通过 SPM 轻松地将这个包添加到你的项目中。

File -> Swift Packages -> Add Package Dependency

然后在庞大的列表中找到 'Bruynet',并将其添加到你的项目中。

我建议你使用最新版本。

Meta

Barış UYAR – @prospectchabaris.uyar@hotmail.com

Github