测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017 年 7 月 |
SwiftSwift 版本 | 3.0.2 |
SPM支持 SPM | ✓ |
由 Dimitris C. 维护。
一个小型 API 服务框架
要将 Omicron 设置为 Swift 包管理器 包,只需在您的 Package.swift 文件中添加以下内容。
import PackageDescription
let package = Package(
name: "HelloOmicron",
dependencies: [
.Package(url: "https://github.com/dimtris-c/Omicron.git", "0.1")
]
)
如果您不希望使用上述任何依赖管理器,可以将 Omicron 手动集成到项目中。
cd
命令进入您的顶级项目目录,然后运行以下命令(如果你的项目还没有初始化为 Git 仓库)$ git init
$ git submodule add https://github.com/dimitris-c/Omicron.git
$ git submodule update --init --recursive
打开新的 Omicron
文件夹,并将 Omicron.xcodeproj
拖动到您的应用程序 Xcode 项目的 Project Navigator 中。
它应该嵌套在您的应用程序的蓝色项目图标之下。它在所有其他 Xcode 组之上或之下并不重要。
在 Project Navigator 中选择 Omicron.xcodeproj
,并验证其部署目标是否与您的应用程序目标的部署目标匹配。
接下来,在 Project Navigator 中选择您的应用程序项目(蓝色项目图标)进入目标配置窗口,并在侧边栏的“目标”部分中选择应用程序目标。
在该窗口顶部的标签栏中,打开“常规”面板。
在“嵌入式二进制文件”部分下单击 +
按钮。
您将看到两个不同的 Omicron.xcodeproj
文件夹,每个文件夹都有两个不同的 Omicron.framework
版本,嵌套在 Products
文件夹中。
选择哪个
Products
文件夹并不重要。
选择 Omicron.framework
。
这就完成了!
Omicron.framework
将自动添加为目标依赖项,并作为链接框架和嵌入式框架在复制文件构建阶段中嵌入,这就是您在模拟器和设备上构建所需的所有内容。
+
按钮。Omicron.framework
。服务的初始设置。
enum GithubService {
case user(name: String)
}
extension GithubService: Service {
var baseURL: URL { return URL(string: "https://api.github.com")! }
var path: String {
switch self {
case .user(let name): return "/users/\(name)"
}
}
var method: HTTPMethod {
return .get
}
var params: RequestParameters {
return RequestParameters.default
}
}
典型使用方法
let service = APIService<GithubService>()
service.callJSON(with: .user(name: "dimitris-c")) { (success, result, response) in
if let json = result.value, success {
print(json)
}
}
要取消请求,每个调用API的方法都返回一个 Alamofire 请求。
let service = APIService<GithubService>()
let request = service.callJSON(with: .user(name: "dimitris-c")) { (success, result, response) in
if let json = result.value, success {
print(json)
}
}
//later on...
request.cancel()
使用 RxSwift
let service = RxAPIService<GithubService>()
_ = service.callJSON(with: .user(name: "dimitris-c")).subscribe(onNext: { json in
print(json)
})
Omicron 的优点之一是可以为返回特定模型的请求定义自定义解析器。我们已经提供了 JSONResponse,它会直接从服务器输出原始 JSON 数据。
struct GithubUser {
let id: String
let user: String
let name: String
init(with json: JSON) {
self.id = json["id"].stringValue
self.user = json["user"].stringValue
self.name = json["name"].stringValue
}
}
class GithubUserResponse: APIResponse<GithubUser> {
override func toData(rawData data: JSON) -> GithubUser {
return GithubUser(with: data)
}
}
let service = ApiService<GithubService>()
var user: GithubUser?
service.call(with: .user(name: "dimitris-c"), parse: GithubUserResponse(), { (success, result, response) in
if success {
user = result.value
}
})
Omicron 采用 MIT 许可协议发布。有关详细信息,请参阅LICENSE。