Swift- JSON 超过一页的请求
Swift- JSON Requests with more than one page
我正在使用 Alamofire 和 SwiftyJSON 访问 Youtube API 并获取频道的播放列表数。我的问题是 Youtube returns 每页(或请求)只有 5 个项目,我不知道如何访问其余的!
func getPlaylists() {
Alamofire.request(.GET, playlistURL).validate().responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
let json = JSON(value)
print(json["items"].count) //Always returns 5
}
case .Failure(let error):
print(error)
}
}
}
谁能告诉我如何访问下一组结果?
您可以在 API 文档中找到答案,可能在此处 YouTube Data API。
注意:在您的请求中,您可以使用查询参数设置每页的最大项目数:maxResults
。这可以是 5 到 50,默认等于 5。
当您收到响应时,服务器 returns 一个包含 JSON 值 "nextToken": <string>
的 JSON。在您的下一个请求中使用此值,您可以在其中插入查询参数 pageToken=<string>
.
您可以修改 getPlaylists
方法,使其采用参数 nextToken: String
。最初使用空字符串或更好的可选初始化为 nil
.
调用此方法
在您的完成处理程序中,从 JSON 响应中检索 "nextToken"
值。如果存在,请使用此参数调用您的方法。否则,您将获得所有页面。
您的方法 getPlaylists
还应该有一个完成处理程序。检索完所有页面后调用完成处理程序。
我正在使用 Alamofire 和 SwiftyJSON 访问 Youtube API 并获取频道的播放列表数。我的问题是 Youtube returns 每页(或请求)只有 5 个项目,我不知道如何访问其余的!
func getPlaylists() {
Alamofire.request(.GET, playlistURL).validate().responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
let json = JSON(value)
print(json["items"].count) //Always returns 5
}
case .Failure(let error):
print(error)
}
}
}
谁能告诉我如何访问下一组结果?
您可以在 API 文档中找到答案,可能在此处 YouTube Data API。
注意:在您的请求中,您可以使用查询参数设置每页的最大项目数:maxResults
。这可以是 5 到 50,默认等于 5。
当您收到响应时,服务器 returns 一个包含 JSON 值 "nextToken": <string>
的 JSON。在您的下一个请求中使用此值,您可以在其中插入查询参数 pageToken=<string>
.
您可以修改 getPlaylists
方法,使其采用参数 nextToken: String
。最初使用空字符串或更好的可选初始化为 nil
.
在您的完成处理程序中,从 JSON 响应中检索 "nextToken"
值。如果存在,请使用此参数调用您的方法。否则,您将获得所有页面。
您的方法 getPlaylists
还应该有一个完成处理程序。检索完所有页面后调用完成处理程序。