SKWebServiceController
SKWebServiceController 提供了一个基本网络层与返回 JSON 或图片的服务进行交互。查看工作区中的 SampleProject 以查看使用示例。
安装
Cocoapods
安装支持通过 Cocoapods。将以下内容添加到你想使用 SKWebServiceController 的目标的 pod 文件中。
pod 'SKWebServiceController'
初始化
初始化只需要一个基本URL。除了getImages外的所有请求都会在基本URL上附加提供的端点信息。最常用的实现可能是扩展此控制器并提供baseURL。如果您有多个baseURL,它们每个都需要单独的WebServiceController对象。最常用的实现将包括一个单例以访问WebServiceController对象。
import SKWebServiceController
class MyWebServiceController: WebServiceController {
static let shared = MyWebServiceController()
init() {
super.init(baseURL: "https://jsonplaceholder.typicode.com/")
}
}
可选地,可以传入一个包含默认参数的字典。这些值会在端点之后作为查询参数附加到每个URL上。
WebServiceController
WebServiceController子类将用于执行请求。公开了便于执行这些请求的方法。这些请求中的每一个都需要一个端点和一个RequestConfiguration
对象来处理头部字段和参数。另外,每个方法返回一个URLSessionDataTask对象以允许在请求中途取消请求。
JSON方法
这些方法用于与发送和接收JSON的端点交互。所有请求都有一个在请求完成后执行的JSONCompletion
对象。这些方法需要指定一个通用类型来指定预期的JSON类型。例如,一个返回数组的GET调用会调用以下内容
get { (json: [Any]?, response, error) in
}
如果期望返回数据是字典,则相应的GET调用将写成如下形式
get { (json: [String: Any]?, response, error) in
}
这可以支持由JSONSerialization.jsonObject(with:options:)
输出任何类型。如果调用应返回Data
或UIImage
,则有一组专门用于检索这些的方法。详见下文的数据方法和图像方法。如果类型未知或更倾向于1.x的行为版本,可以指定为Any?
类型。
删除
在提供的端点上进行删除请求。
获取
在提供的端点上执行GET请求。
发布
在提供的端点上执行POST请求。此方法有一个可选的json参数。此对象必须是有效的JSON对象。这将被转换为数据并与请求一起发送。
更新
在提供的端点上执行PUT请求。此方法有一个可选的json参数。此对象必须是有效的JSON对象。这将被转换为数据并与请求一起发送。
数据处理方法
目前有一个从URL获取数据的方法。此方法有一个DataCompletion
对象,当请求完成时执行。这个方法不会尝试以任何方式解析或格式化数据,只是简单地返回由网络服务发送的数据。
获取数据
此方法接受一个完整的URL,并将返回网络服务返回的任何数据,而不会以任何方式对其进行格式化或操作。
图像处理方法
目前有一个从URL获取图像的方法。此方法有一个ImageCompletion
对象,当请求完成时执行。
获取图像
与其他方法不同,该方法不是从一个端点字符串动态构建URL,而是直接使用远程图像的完整URL。当方法完成后,将通过ImageCompletion
对象返回图像或错误。
请求配置
请求配置
对象允许根据每个请求来设置头和参数。如果相同的头在请求配置和URLSessionConfiguration对象中都出现了,则请求配置中的头将会优先。