【发布时间】:2018-10-22 18:49:27
【问题描述】:
我需要做递归请求,然后将所有模型收集到一个列表中,但不知道该怎么做。请告诉我我的想法是否正确?
package kindSir.main
import dispatch.Defaults._
import dispatch._
import kindSir.models._
import org.json4s._
import org.json4s.jackson.JsonMethods._
object ApplicationMain extends App {
def fetchMergeRequests(startPage: Int = 1): Future[List[MergeRequest]] = {
val requestsUrl = url(s"https://gitlab.com/api/v4/projects/gitlab-org%2Fgitlab-ce/merge_requests?state=opened&per_page=3&page=${startPage}")
Http(requestsUrl).map { res =>
(parse(res.getResponseBody), res.getHeader("X-Next-Page").toInt) match {
case (list@JArray(_), nextPage: Int) =>
val currentList: List[MergeRequest] = MergeRequest.parseList(list).get
val nextPageListFuture: Future[List[MergeRequest]] = fetchMergeRequests(nextPage)
// And how to merge these two lists?
case (list@JArray(_), _) => MergeRequest.parseList(list).get
case _ => throw new RuntimeException(s"No merge requests for project found")
}
}
}
}
【问题讨论】:
-
有趣。是否明确要求您生成递归 http 请求,例如在课堂环境中?还是您正在使用此机制解决一些业务问题?
-
考虑这个:xyproblem.info
标签: scala jackson gitlab gitlab-api