测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年2月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Tarvo Mäesepp 维护。
基于 Foundation 的轻量级 REST API 传讯器,用 Swift 编写。一个简单易用的工具,可轻松与服务器 API 进行 JSON 格式通信。支持在 HTTP 身体中查询和有效的 JSON 对象。
框架目前支持 GET
、POST
、PUT
和 DELETE
请求。
对于 Swift 2.2 使用 0.2.2
标签。此版本将不再支持。
github "Gujci/RESTAPI" "== 0.2.2"
默认情况下,您可以执行单个请求,该请求返回一个简单的 JSON 响应。
let testServerApi = API(withBaseUrl: "http://jsonplaceholder.typicode.com")
testServerApi.get("/posts") { (error, data) in
//This data will be SwiftyJSON's Optional JSON type by default (data: JSON?)
}
或者如果您愿意,您可以用同一请求获取解析的响应类型。
首先您必须实现您的响应类型,该类型必须遵循 JSONParseable
协议。
struct ExampleResponse: JSONParseable {
var body: String
var id: Int
var title: String
var userId: Int
init(withJSON data: JSON) {
body = data["body"].stringValue
id = data["id"].intValue
title = data["title"].stringValue
userId = data["userId"].intValue
}
}
在实现响应对象之后,您必须将完成参数列表中的期望响应数据类型设置为这种类型。
testServerApi.get("/posts") { (error, data: [ExampleResponse]?) in
//This a swift array now, filled with ExampleResponse instances
}
在这种情况下期望的是一个数组作为响应,但简单类型也可以(如 ExampleResponse?
)。重要的是,您必须将您的参数标记为可选的,否则您会得到编译时错误。
查询就像这样简单
testServerApi.get("/posts", query: ["userId" : "1"]) { (error, object: [ExampleResponse]?) in
//...
}
查询参数字典中的值必须实现 Queryable
协议,String
和 Array
类型默认实现了它。
testServerApi.post("/posts", data: ["body": "something","id": 1, "title": "Some title", "userId": 9]) { (error, object) in
//...
}
体参数应符合 ValidJSONObject
协议。默认情况下,Array
和 Dictionary
类型实现了它。
要验证请求,您必须设置API实例的 authentication
属性。目前,此框架支持基于HTTP头和URL查询的简单访问令牌认证。以下是一个如何设置基于HTTP头认证的简单示例。
var accessToken: String?
var sessionAuthenticator: RequestAuthenticator {
let auth = RequestAuthenticator()
auth.tokenKey = "access_token"
if let validToken = self.accessToken {
auth.type = .HTTPHeader
auth.accessToken = validToken
}
else {
auth.type = .None
}
return auth
}
//...
testServerApi.authentication = sessionAuthenticator
//...