KituraKit 0.0.23

KituraKit 0.0.23

维护者:Matt KilnerDavid JonesMathieu BarnachonAndrew LeesSwift-at-IBMDanny Sung



 
依赖
SwiftyRequest~> 2.0
KituraContracts~> 1.1
 

KituraKit 0.0.23

  • IBM

Kitura

APIDoc Build Status - Master macOS Linux Apache 2 Slack Status

KituraKit - Kitura v2 客户端库

Kitura 是一个轻量级的 Swift 服务器应用程序框架。

KituraKit 是一个发送 HTTP 请求到 Kitura 服务器的客户端框架。通过使用 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. 运行命令 pod install 安装 KituraKit

  2. 除了安装 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支持以下插件的客户端身份验证

如需更多信息,请访问我们的API参考

社区

我们热爱讨论服务器端Swift和Kitura。加入我们的Slack,与团队见面吧!

许可

本库采用Apache 2.0许可。完整的许可文本可在LICENSE中找到。