APIRequest

public protocol APIRequest

请求协议 每一个域名一个

  • cache Default implementation

    缓存 目前 taskType 为 request 才生效

    Default Implementation
    Declaration

    Swift

    var cache: APICache? { get }
  • cacheShouldWriteHandler Default implementation

    是否允许缓存 可根据业务实际情况控制:比如业务code为成功,业务数据不为空 这个闭包之所以不放入 APICache 内部的原因是 享受泛型的回调

    Default Implementation
    Declaration

    Swift

    var cacheShouldWriteHandler: ((APIResponse<Response>) -> Bool)? { get }
  • intercept(parameters:) Default implementation

    拦截参数,在参数编码之前 可以用于加上一些统一参数的场景

    Default Implementation
    Declaration

    Swift

    func intercept(parameters: [String : Any]?) -> [String : Any]?
    Parameters
    parameters

    业务方传入的参数

    Return Value

    处理后的参数

  • intercept(urlRequest:) Default implementation

    拦截urlRequest,在传给client之前 可以用于添加统一Header等场景

    Default Implementation
    Declaration

    Swift

    func intercept(urlRequest: URLRequest) throws -> URLRequest
    Parameters
    urlRequest

    已经构造的 URLRequest

    Return Value

    处理之后的 URLRequest

  • 拦截回调,在回调给接收方之前

    Default Implementation
    Declaration

    Swift

    func intercept<U>(request: U, response: APIResponse<Response>, replaceResponseHandler: @escaping APICompletionHandler<Response>) where U : APIRequest
    Parameters
    request

    发送的URLRequest

    response

    回调结果

    replaceCompletionHandler

    替换返回给业务方的回调,如果不处理,将 response 回调即可

    Return Value

    处理之后的 URLRequest

  • completeURL Extension method

    完整的URL 不包含参数,只是 baseURL 与 path 的拼接

    Declaration

    Swift

    public var completeURL: URL { get }