基于 Alamofire 构建的、基于 Codable 协议的轻量级、无状态 REST 网络管理器。
要了解更多关于此库的信息,请查看文档。
将 RestBird 作为依赖项添加到您的项目中。
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "0.5")
然后,简单地将 RestBird 与您的目标集成。
targets: [
Target(name: "YourTarget", dependencies: ["RestBird"])
]
pod 'RestBird'
您也可以尝试运行
pod try RestBird
github "halcyonmobile/RestBird"
设置项目进行开发的步骤
swift package generate-xcodeproj
生成 Xcode 项目首先,您需要使用自定义或提供的会话管理器驱动程序之一创建您的 NetworkClientConfiguration
配置。我们将使用 AlamofireSessionManager。
struct MainAPIConfiguration: NetworkClientConfiguration {
let baseUrl = "https://api.example.com"
let sessionManager = AlamofireSessionManager()
let jsonEncoder = JSONEncoder()
let jsonDecoder = JSONDecoder()
}
现在我们可以将此配置传递给网络客户端。
let networkClient = NetworkClient(configuration: MainAPIConfiguration())
为了发出请求,应该定义一个 DataRequest
对象。
struct SignIn: DataRequest {
typealias ResponseType = Authentication
let email: String
let password: String
let suffix: String? = API.Path.login
let method: HTTPMethod = .post
var parameters: [String : Any]? {
return [API.Param.email: email, API.Param.password: password]
}
}
现在使用您的网络客户端来执行请求。
let request = SignIn(email: "john-doe@acme.inc", password: "123456")
networkClient.execute(request: request, completion: { result: Result<Authentication> in
print(result)
})
中间件是一种强大的方式来拦截网络请求或响应端点返回的响应。
目前,中间件分为两类
struct LoggerMiddleware: PreMiddleware {
func willPerform(_ request: URLRequest) throws {
Logger.log(resquest)
}
}
struct ErrorMiddleware: PostMiddleware {
func didPerform(_ request: URLRequest, response: URLResponse, data: Data?) throws {
if let data = data, let error = ErrorProvider.provide(for: data) {
throw error
}
}
}
// Register middleware
networkClient.register(LoggerMiddleware())
networkClient.register(ErrorMiddleware())
为了避免为网络类编写样板代码,我们编写了一些模板来使用 Sourcery 生成代码。前往模板仓库。
以下是使用模板的两个请求的样子
/// sourcery: Service
protocol PostService {
/// sourcery: path = /posts/\(id)
/// sourcery: pathParam = id
func get(id: String, completion: (result: Result<Post>) -> Void)
/// sourcery: method = post, path = /posts
/// sourcery: parameter = post
/// sourcery: parameter = json
func save(post: Post, completion: (result: Result<Post>) -> Void)
}
您可以找到未通过软件包分发的 RestBird 的便捷封装器。这包括 PromiseKit 和 RxSwift 封装器。
查看这里。
RestBird 在 MIT 许可下发布。 有关详细信息,请参阅 LICENSE。
如果您在您的项目中使用该开源库,请确保注明并反向链接到http://halcyonmobile.com