我正在使用一个 Web API,它提供的结果达到给定的限制(pageSize请求的参数)。如果结果数量超过此限制,则响应消息会预先填充一个 URL,可以向该 URL 发出后续请求以获取更多结果。如果有更多结果,则再次以相同方式指示。
我的目的是一次获取所有结果。
目前我有类似以下的请求和响应结构:
// Request structure
struct TvShowsSearchRequest {
let q: String
let pageSize: Int?
}
// Response structure
struct TvShowsSearchResponse: Decodable {
let next: String?
let total : Int
let searchTerm : String
let searchResultListShow: [SearchResult]?
}
Run Code Online (Sandbox Code Playgroud)
使用完成处理程序解决“旧式”问题时,我必须编写一个处理程序,它使用响应的 URL 触发“处理更多”请求:
func handleResponse(request: TvShowsSearchRequest, result: Result<TvShowsSearchResponse, Error>) -> Void {
switch result {
case .failure(let error):
fatalError(error.localizedDescription)
case .success(let value):
print("> Total number of shows matching the query: \(value.total)")
print("> Number …Run Code Online (Sandbox Code Playgroud)