YALAPIClient 2.9.1

YALAPIClient 2.9.1

Yalantis维护。



  • Eugene Andreyev, Roman Kyrylenko和Anton Vodolazkyi

APIClient

cocoapods swift Platform License

集成(Cocoapods)

有三个podspecs

  • APIClient/Core 包含纯接口/用于抽象实现的类型。 apenas use it when you're about to provide a custom implementation of the request executor.
  • APIClient/Alamofire 包含AlamofireRequestExecutor实现。

用法

所有请求都应该通过APIClient的实例进行。 它的构造函数需要指定至少一个请求执行器。 在APIClient/Alamofire的情况下,它是AlamofireRequestExecutor(它将基URL初始化为您的服务器,并且可选地可自定义以适应需求)。 您还可以提供要由该客户端使用的插件列表(默认情况下,您有ErrorPreprocessorPlugin(errorPreprocessor: NetworkErrorProcessor()),所以如果您使用自己的列表,请务必将其包含在内)和反序列化程序(默认情况下为JSONDeserializer)。

下一步是声明您的请求。 请求是提供所需数据的纯对象(值)。 您的请求应该符合三种可用类型之一: APIRequestDownloadAPIRequestMultipartAPIRequest(名称对应它们的角色)。 《downloadapirequest》和《multipartapirequest》都是继承自《apirequest》,所以您可以提供任何所需的数据(例如头信息、参数、编码等)。 您至少必须指定基本请求的《_ENDPOINT》。

最后,你需要调用您的客户端的 execute(request:parser:completion: 方法来执行您的请求。在这里,您还需要指定解析器(ResponseParser 协议的一个实例)。您可以直接使用 DecodableParserJSONParser

PluginType

APIClient 使用了插件行为,允许您几乎完整地控制其执行流程。您可以通过实现 PluginType 协议并将其传递到客户端的构造函数中来定义自己的插件,这将替换/修改/记录/解析/装饰等任何传递的请求。有关方法的详细列表,请参阅 PluginType

APIClient 还包含了一些基本的插件。

AuthorizationPlugin

允许您通过在头中传递令牌来对其请求进行授权。为了使用它,您需要向插件提供 AuthorizationCredentialsProvider 并将您的请求标记为可授权,通过实现空的协议 AuthorizableRequest

RestorationTokenPlugin

允许您在令牌过期的情况下恢复会话。为了使用它,您需要提供 AccessCredentialsProvider(用于获取令牌相关信息;它也有处理恢复结果的回调)以及用于提供执行恢复请求结果的回调。

LoggingPlugin

简单地记录了任何条目到插件中,使用可选提供的闭包。

ErrorDecoratorPlugin

用于将传入的错误 NetworkError 装饰(例如映射)到自定义类型。

ErrorRecovererPlugin

允许简化错误恢复流程

ErrorPreprocessorPlugin

允许您处理纯((httpResponse: HTTPURLResponse, data: Data))响应并创建适当的错误。

默认情况下,APIClient 使用 ErrorPreprocessorPlugin(errorPreprocessor: NetworkErrorProcessor()),这允许我们在处理未捕获的错误时创建 NetworkError.response

版本历史

版本 Swift 依赖项 iOS
2.9.1 5.0 Alamofire 4.9, YALResult 1.4 10
2.9 5.0 Alamofire 4.8, YALResult 1.4 10
2.8 4.2 Alamofire 4.7, YALResult 1.1 10
2.0.1 4.2 Alamofire 4.6, YALResult 1.0 10
1.1.3 4.0 Alamofire 4.6, BoltsSwift 1.4, ObjectMapper 3.3 9
1.0.7 3 Alamofire 4, BoltsSwift 1.3, ObjectMapper 2.0 9