KituraKit - Kitura v2 客户端库
Kitura 是一个轻量级的 Swift 服务器应用程序框架。
KituraKit 是一个发送 HTTP 请求到 Kitura 服务器的客户端框架。通过使用 Swift 的 Codable
协议,您可以直接从客户端向服务器发送和接收模型。
Swift 版本
KituraKit 的最新版本需要 Swift 4.0 或更高版本。您可以通过以下链接下载 Swift 二进制版本的此版本:链接。
使用方法
CocoaPod 安装
-
导航到您项目的根目录(您的 .xcodeproj 目录所在的位置)
-
如果您还没有 podfile,请在当前目录中运行
pod init
以创建一个新的 podfile。 -
使用您喜欢的文本编辑器打开 Podfile,并在“# Pods for 'your_project_name'>”行下面添加
pod 'KituraKit'
-
运行命令
pod install
安装 KituraKit -
除了安装 KituraKit 之外,
pod install
命令还会创建一个包含所有已安装 Pods 的 Xcode 工作空间。因此,您需要打开.xcworkspace
文件(不是.xcodeproj
),以便访问这些 Pods。这是 Cocoapods 的默认行为。[查看更多](https://guides.cocoapods.org.cn/using/getting-started.html)。
SPM 安装
我们期望客户端用户使用 Cocoapod 安装,但是如果您需要从服务器访问 KituraKit,则可以使用 Swift Package Manager。
添加依赖项
将 KituraKit
包添加到应用程序的 Package.swift
文件中的依赖项。将 "x.x.x"
替换为最新的 KituraKit
[发布版](https://github.com/IBM-Swift/KituraKit/releases)。
.package(url: "https://github.com/IBM-Swift/KituraKit.git", from: "x.x.x")
将 KituraKit
添加到目标的依赖项
.target(name: "example", dependencies: ["KituraKit"]),
导入包
import KituraKit
示例
要运行 FoodTracker 教程,它涵盖了包括 KituraKit 在内的各种组件,请点击这里[查看教程](https://github.com/IBM/FoodTrackerBackend)。
要自己尝试使用 KituraKit 的 iOS 示例项目,请点击这里[下载示例](https://github.com/IBM-Swift/iOSSampleKituraKit)。
API 文档
KituraKit
KituraKit
类负责连接到您的Kitura服务器并执行REST请求。
您可以通过提供Kitura服务器的URL来创建一个KituraKit
实例
if let client = KituraKit(baseURL: "https://:8080") {
// Use client to make requests here
}
可编码模型
Kitura和KituraKit可以直接发送和接收Swift类型实例。这些类型(即模型)可以在客户端和服务器之间共享。
模型必须遵守Codable
协议。
public struct User: Codable {
public let name: String
public init(name: String) {
self.name = name
}
}
HTTP请求
KituraKit中的HTTP请求签名与Kitura中的Codable路由类似。以下示例将展示代码的外观。
如果您在服务器上有以下GET路由
// Kitura server route
router.get("/users") { (completion: ([User]?, RequestError?) -> Void) in
let users = [User(name: "Joe"), User(name: "Bloggs")]
completion(users, nil)
}
您可以使用您的KituraKit
客户端上的get
函数向其发请求
// KituraKit client request
client.get("/users") { (users: [User]?, error: RequestError?) -> Void in
if let users = users {
// GET successful, work with returned users here
}
}
类似地,要向Kitura POST路由发送请求
// Kitura server route
router.post("/users") { (user: User, completion: (User?, RequestError?) -> Void) in
completion(user, nil)
}
您可以使用您的KituraKit
客户端上的post
函数向其发请求
// KituraKit client request
let newUser = User(name: "Kitura")
client.post("/users", data: newUser) { (user: User?, error: RequestError?) -> Void in
if let user = user {
// POST successful, work with returned users here
}
}
KituraKit支持以下REST请求
- 获取一个可编码对象。
- 使用标识符获取一个可编码对象。
- 使用查询参数获取一个可编码对象。
- 发送一个可编码对象。
- 发送一个可编码对象并返回一个标识符。
- 使用标识符使用PUT更新一个可编码对象。
- 使用标识符使用PATCH更新一个可编码对象。
- 使用标识符进行DELETE操作。
- 不使用标识符进行DELETE操作。
身份验证
Kitura服务器可以使用Credentials仓库来验证用户。KituraKit允许您在请求中提供凭证以向服务器识别自己。
注意:在发送凭证时,您应始终使用HTTPS以避免明文发送密码/令牌。
您可以为客户设置默认凭据,这些凭据将附加到所有请求。如果您的服务器使用Kitura-CredentialsHTTP进行基本身份验证,您将如下提供用户名和密码
if let client = KituraKit(baseURL: "https://:8080") {
client.defaultCredentials = HTTPBasic(username: "John", password: "12345")
}
或者,您可以在请求中直接提供凭据
let credentials = HTTPBasic(username: "Mary", password: "abcde")
client.get("/protected", credentials: credentials) { (users: [User]?, error: RequestError?) -> Void in
if let users = users {
// work with users
}
}
KituraKit支持以下插件的客户端身份验证
- 使用Kitura-CredentialsHTTP进行HTTP基本认证。
- 使用Kitura-CredentialsFacebook进行Facebook OAuth令牌认证。
- 使用Kitura-CredentialsGoogle进行Google OAuth令牌认证。
如需更多信息,请访问我们的API参考。
社区
我们热爱讨论服务器端Swift和Kitura。加入我们的Slack,与团队见面吧!
许可
本库采用Apache 2.0许可。完整的许可文本可在LICENSE中找到。