如何使用 RxSwift 和 alamofire 获得嵌套 api 调用的响应?
Posted
技术标签:
【中文标题】如何使用 RxSwift 和 alamofire 获得嵌套 api 调用的响应?【英文标题】:How to get response of a nested api call using RxSwift and alamofire? 【发布时间】:2018-02-27 06:39:48 【问题描述】:在这里,我得到了来自 alamofire api cal 的响应,因此我需要调用另一个 api 调用。我想获得第二个 api 调用响应。谁能建议我解决这个问题的解决方案。请。
func origin() -> Observable<String>
return Alamofire.request("httpbin.org/get").rx.responseJSON()
func otherApiCall(with origin: String) -> Observable<YourType>
// Other api call using origin
return Alamofire...........
然后
origin()
.flatMap origin in
otherApiCall(with: origin)
.subscribe(onNext: response in
)
.disposed(by: disposeBag)
【问题讨论】:
“我收到回复了” - 在哪里? 从第一个 api 调用开始。我会得到一个响应,通过使用我想调用第二个 api 调用的响应 这是对您的提示,您应该发布一些代码。 这里我放了一些示例代码。请检查一下 【参考方案1】:您的代码解释不多,但根据我的理解,如果您想使用其他 api 的响应调用 api,而不是下面的代码应该可以工作。
func firstRequest() -> Observable<firstRequestResponseType>
return firstRequest
firstRequest
.flatMap (firstRequestResponseType) -> Observable<secondRequestResponseType>
return secondRequest
.map (secondRequestResponseType)
//you can user second request’s response here
.subscribe()
【讨论】:
实际上编译器并没有等待第二次调用响应的响应 @gunjan 在两个 API 请求都完成后,您将在地图块中到达 实际上第二个 api 调用取决于第一个 api 调用响应的值。在这里,我需要使用满足条件的那些第一个响应值来调用第二个 api 调用。所以第二个 api 调用将被调用任意次数。我需要以循环方式获取响应以附加第一个响应..你能帮我吗 您可以在 flatMap 块中使用第一个请求的响应在上面的示例中,或者如果您想多次共享第一个请求的响应,您可以使用 RxSwift 的 share() 方法以上是关于如何使用 RxSwift 和 alamofire 获得嵌套 api 调用的响应?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 RxSwift 和 alamofire 获得嵌套 api 调用的响应?
Alamofire/RxSwift 如何在状态码 401 上自动刷新令牌和重试请求
如何使用 RxSwift 和 Alamofire 库调用来自另一个 API 的响应的 API?