这是对 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]
}
测试
库经过了标准测试集的测试,以及一些针对特定实现的额外测试。目的是尽可能维持高测试覆盖率。