Kitura 是一个轻量级的 Web 框架,用于编写 Swift 服务器应用程序。
KituraKit 是一个客户端框架,用于向 Kitura 服务器发送 HTTP 请求。通过使用 Swift 的 Codable
协议,您可以直接在客户端和服务器之间发送和接收模型。
最新版本的 KituraKit 需要 Swift 4.0 或更高版本。您可以按照此链接下载此版本的 Swift 二进制文件。
导航到您的项目根目录(您的 .xcodeproj 目录所在的位置)
如果您还没有 podfile,请运行 pod init
以在当前目录中创建一个新的 podfile。
使用您喜欢的文本编辑器打开 Podfile,并在 "# Pods for 'your_project_name'>" 行下添加
pod 'KituraKit'
通过运行以下命令安装 KituraKit:pod install
除了安装 KituraKit 之外,pod install
还会创建一个 Xcode 工作区,其中包含所有已安装的 pods。因此,您需要打开 .xcworkspace
文件(而不是 .xcodeproj
)才能访问这些 pods。这是 Cocoapods 的默认行为。
我们希望客户端的用户使用 Cocoapod 安装,但是,如果您需要从服务器访问 KituraKit,则可以使用 Swift Package Manager。
将 KituraKit
包添加到应用程序的 Package.swift
文件中的依赖项中。将 "x.x.x"
替换为最新的 KituraKit
版本。
.package(url: "https://github.com/Kitura/KituraKit.git", from: "x.x.x")
将 KituraKit
添加到目标依赖项中
.target(name: "example", dependencies: ["KituraKit"]),
import KituraKit
要浏览涵盖 Kitura 的各种组件(包括 KituraKit)的 FoodTracker 教程,请点击此处
要亲自尝试使用 KituraKit 的示例 iOS 项目,请点击此处。
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
}
}
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 请求
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 支持以下插件的客户端身份验证
有关更多信息,请访问我们的 API 参考。
我们很乐意讨论服务器端 Swift 和 Kitura。加入我们的 Slack 与团队见面!
此库根据 Apache 2.0 获得许可。完整的许可证文本可在 LICENSE 中找到。