HandyRequest 0.0.6

HandyRequest 0.0.6

TemaSir 维护。



 
依赖
Moya~> 15.0.0
RxSwift~> 6.5.0
SwiftyJSON~> 5.0.1
 

  • OrchidBloom

HandyRequest

Version License Platform

示例

要运行示例项目,首先克隆代码库,然后从 Example 目录运行 pod install

需求

安装

HandyRequest 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中

pod 'HandyRequest'

示例

示例API定义

import HandyRequest

enum ExampleAPI {
    case movies
}

extension ExampleAPI: ApiType {

    var method: TaskMethod {
        return .get
    }

    var baseURL: URL {
        URL(string: "https://reactnative.net.cn")!
    }

    var path: String {
        "movies.json"
    }

    var task: Task {
        return .requestPlain
    }
}

是否设置数据解析拦截器。

class HandyRequestAdapter: RequestAdapter {
  func endpointClosureBuilder(target: MultiTarget) -> Endpoint {
    RestProvider.defaultEndpointMapping(for: target)
  }
  func requestClosureBuilder(endpoint: Endpoint, closure: RestProvider<MultiTarget>.RequestResultClosure) {
    RestProvider<MultiTarget>.defaultRequestMapping(for: endpoint, closure: closure)
  }
  // Return success or failure according to your requirements
  func singleClosureBuilder(single: @escaping SingleResponse, result: RestCompletion) {
    switch result {
      case .success(let reponse):
        single(.success(HandyResponse(reponse)))
      case .failure(let error):
        single(.error(error))
    }
  }
  // If there is a cache, return success or failure according to your own requirements
  func observableClosureBuilder(observer: ObservableResponse, result: RestCompletion) -> Bool {
    switch result {
      case .success(let reponse):
        observer.onNext(HandyResponse(reponse))
        observer.onCompleted()
        return true
      case .failure(let error):
        observer.onError(error)
        return false
    }
  }
}

设置请求适配器

Rest.requestAdapter = HandyRequestAdapter() // Set request adapter, Error handling can be customized

开始请求

支持可解析数据
  Rest.launch(ExampleAPI.movies) 
    .mapJSONForKey("movies")
    .decodeArray(Movie.self)
    .subscribe { (response) in
      print(response)
    } onError: { (error) in
      print(error)
    }.disposed(by: bag)
支持ObjectMapper解析数据
Rest.launch(ExampleAPI.movies) to parse data
.mapArrayForKey("movies", baseMappable: Movie1.self)
.subscribe { (response) in
  print(response)
} onError: { (error) in
  print(error)
}.disposed(by: bag)
支持cache和Coable解析数据
Rest.launch(ExampleAPI.movies, alwaysFetchCache: true)
.mapJSONForKey("movies")
.decodeArray(Movie.self)
.subscribe { (response) in
  print(response)
} onError: { (error) in
  print(error)
}.disposed(by: bag)
支持缓存 & ObjectMapper 解析数据
Rest.launch(ExampleAPI.movies, alwaysFetchCache: true)
.mapArrayForKey("movies", baseMappable: Movie1.self)
.subscribe { (response) in
  print(response)
} onError: { (error) in
  print(error)
}.disposed(by: bag)

作者

Tema.Tian

许可证

HandyRequest 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。