HandyRequest
示例
要运行示例项目,首先克隆代码库,然后从 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 文件。