Ios Swift:处理多个API请求
我目前正在实现一个具有collectionView的应用程序。集合视图中的单元格通过API请求填充。请求发送到相同的API,但位置不同。比如我打电话的第一个单元格:“google.de/gamessinitaly”,第二个单元格:“google/gamessingermany”。当我向下滚动collectionView时,出现的单元格也应该发出一个具有不同国家/地区的API请求 我面临的问题是,我不知道如何处理不同的API调用。Ios Swift:处理多个API请求,ios,swift,api,Ios,Swift,Api,我目前正在实现一个具有collectionView的应用程序。集合视图中的单元格通过API请求填充。请求发送到相同的API,但位置不同。比如我打电话的第一个单元格:“google.de/gamessinitaly”,第二个单元格:“google/gamessingermany”。当我向下滚动collectionView时,出现的单元格也应该发出一个具有不同国家/地区的API请求 我面临的问题是,我不知道如何处理不同的API调用。 我设法发出一个API请求,并用相同的数据填充每个单元格,但我希望每
我设法发出一个API请求,并用相同的数据填充每个单元格,但我希望每个单元格都有不同的数据 我的代码如下所示: 收藏视图: 从collectionView调用:
func fetchMatch() {
ApiService.sharedInstance.fetchGames(from: contentURL, completion: { (content: [[contentModel]]) in
self.content = content
self.collectionView.reloadData()
})
}
API服务:
设置Url:
func fetchGames(from url: String, completion: @escaping ([contentModel]) -> ()) {
fetchFeedForUrlString(urlString: "\(BaseUrl)/getgames/\(url)", completion: completion)
}
提取功能:
func fetchFeedForUrlString<T: Decodable>(urlString: String, completion: @escaping (T) -> ())
{
let url = URL(string: urlString)
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
guard let data = data else {
return
}
do {
let json = try JSONDecoder().decode(T.self, from: data)
DispatchQueue.main.async {
completion(json)
}
} catch let jsonError {
print(jsonError)
}
}
task.resume()
}
func fetchFeedForUrlString(urlString:String,completion:@escaping(T)->())
{
让url=url(字符串:urlString)
让task=URLSession.shared.dataTask(带:url!){(数据、响应、错误)在
guard let data=其他数据{
返回
}
做{
让json=try JSONDecoder().decode(T.self,from:data)
DispatchQueue.main.async{
完成(json)
}
}接住让杰森罗{
打印(jsonError)
}
}
task.resume()
}
我想我可以做的是制作许多这些fetchGames函数,但我认为这是一种不好的做法。我也读过关于DispatchGroup的文章,但我不确定如何在我的程序中实现这些
有人知道如何在良好的实践中处理多个API调用吗 我认为,每个单元的API调用不是最佳实践,我建议使用启用分页的单个API。获取前几个国家/地区比赛数据,然后使用滚动加载更多数据pagination@Catherine谢谢你的回答。我搜索了一下,发现了这个,但不幸的是,它使用了一个从api到下一页的链接。正如我所看到的,我的API请求没有提供某种链接。这是你的意思还是我错了?我认为,每个单元格的API调用不是最佳实践,我建议使用启用分页的单个API。获取前几个国家/地区比赛数据,然后使用滚动加载更多数据pagination@Catherine谢谢你的回答。我搜索了一下,发现了这个,但不幸的是,它使用了一个从api到下一页的链接。正如我所看到的,我的API请求没有提供某种链接。这是你的意思还是我错了?