ScreamURITemplate 2.1.0

ScreamURITemplate 2.1.0

Alex Deem维护。



  • Alex Deem

URITemplate license GitHub release

Travis Codecov branch

Swift 4.2 CocoaPods compatible Carthage compatible Swift Package Manager compatible

这是对 RFC6570 URI 模板的 Swift 4.2 强大且高效的实现。提供全面支持第四级。

入门

手册

为 iOS、MacOS、tvOS 和 watchOS 提供了静态框架目标;按照常规方式整合它们。

CocoaPods

在您的 Podfile 中添加 pod 'ScreamURITemplate', '~> 2.1'

Carthage

github "SwiftScream/URITemplate" ~> 2.1 添加到您的 Cartfile 中

对于模拟器构建,您需要在 OTHER_LDFLAGS 中添加 -fprofile-instr-generate;设备构建无需添加此选项。这是因为 carthage 存在此 open issue: https://github.com/Carthage/Carthage/issues/2363 另一种选择是禁用代码覆盖率😞

Swift Package Manager

.package(url: "https://github.com/SwiftScream/URITemplate.git", from: "2.0.0") 添加到 package.swift 的依赖中

Usage

Template Processing

let template = try URITemplate(string:"https://api.github.com/repos/{owner}/{repository}/traffic/views")
let variables = ["owner":"SwiftScream", "repository":"URITemplate"]
let urlString = try template.process(variables)
// https://api.github.com/repos/SwiftScream/URITemplate/traffic/views

当发生错误时

模板初始化和执行都可能失败;抛出 URITemplate.Error 异常。错误情况包含关联值,指定错误的原因字符串和模板字符串中错误发生的索引。

do {
    _ = try URITemplate(string: "https://api.github.com/repos/{}/{repository}")
} catch URITemplate.Error.malformedTemplate(let position, let reason) {
    // reason = "Empty Variable Name"
    // position = 29th character
}

获取模板中使用的变量名

let template = try URITemplate(string:"https://api.github.com/repos/{owner}/{repository}/traffic/views")
let variableNames = template.variableNames
// ["owner", "repository"]

支持 Codable

URITemplate 实现了 Codable 协议,使得对 JSON 对象的序列化和反序列化变得简单。

struct HALObject : Codable {
    let _links : [String:URITemplate]
}

测试

库经过了标准测试集的测试,以及一些针对特定实现的额外测试。目的是尽可能维持高测试覆盖率。