Kitura

APIDoc Build Status - Master macOS Linux Apache 2 Slack Status

KituraKit - Kitura v2 客户端库

Kitura 是一个轻量级的 Web 框架,用于编写 Swift 服务器应用程序。

KituraKit 是一个客户端框架,用于向 Kitura 服务器发送 HTTP 请求。通过使用 Swift 的 Codable 协议,您可以直接在客户端和服务器之间发送和接收模型。

Swift 版本

最新版本的 KituraKit 需要 Swift 4.0 或更高版本。您可以按照此链接下载此版本的 Swift 二进制文件。

用法

Cocoapod 安装

  1. 导航到您的项目根目录(您的 .xcodeproj 目录所在的位置)

  2. 如果您还没有 podfile,请运行 pod init 以在当前目录中创建一个新的 podfile。

  3. 使用您喜欢的文本编辑器打开 Podfile,并在 "# Pods for 'your_project_name'>" 行下添加

pod 'KituraKit'
  1. 通过运行以下命令安装 KituraKit:pod install

  2. 除了安装 KituraKit 之外,pod install 还会创建一个 Xcode 工作区,其中包含所有已安装的 pods。因此,您需要打开 .xcworkspace 文件(而不是 .xcodeproj)才能访问这些 pods。这是 Cocoapods 的默认行为。

SPM 安装

我们希望客户端的用户使用 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 项目,请点击此处

API 文档

KituraKit

KituraKit 类处理与 Kitura 服务器的连接并执行 REST 请求。

您可以通过提供 Kitura 服务器的 URL 来创建一个 KituraKit 实例

if let client = KituraKit(baseURL: "https://:8080") {
    // Use client to make requests here
}

Codable 模型

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 请求

身份验证

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 中找到。