私の目的は、最終的なMap [id、Result]を作成することです。Akka:新しいHttpRequestsを作成するためのHttpResponseの将来のマップ
case class Result(id: String, descr: String)
問題:私はJSONを返すAPIを打つしたいここでResult
は、以下のようにケースクラスです。このJSONを解析し、JSON全体からすべてのmember_id
フィールドを取得します。
- 1):
memberList : List[String]
はこの後 、私はメンバーリストの各文字列のためにやりたい(以下、アッカストリームとのHttpでこれを行う方法を私がブロックされてる部分です) uriへのmember_idを追加するAPIを起動します。
- 2)idとDESCR
- 3のリストを取得するにはJSONをパース)戻りタプル
List[(id, Result)]
最後に、どのように私は正しく、次の2つのメソッドを実装することができ、最終的なMap[id, Result]
を取得するために、すべてのリストを平らにgetResult
とgetResponse
(私がしたいことについて大まかに考えています)以下は
は私のコードです:
case class Result(id: String, descr: String)
//// This is the Starting point of my CODE:
private def addFeatureByTag(tag: String) : Map[String, Result] = {
val uri = "URI to get the Memebers"
val result = Source
.single(Http().singleRequest(HttpRequest(uri = uri))
.map(getMembers)
.map(getResult)
}
private def getMembers(response : Future[HttpResponse]):
Future[Source[String, NotUsed]] = {
response.flatMap {
res =>
res.status match {
case StatusCodes.OK =>
Unmarshal(res.entity).to[String] map {
jsonOut => getAllMembers(jsonOut). //// This method return the stream of `Members` (Strings)
}
}
}
}
// How can I implement following two methods correctly `getResult` and `getResponse`
private def getResult(member: Future[Source[String, NotUsed]]) : Future[Source[Future[HttpResponse], NotUsed]] = {
// member.map(mem => getResponse(PREFIX + mem))
}
private def getResponse(uri: Source[String, NotUsed]) = {
// val resp = Http().singleRequest(HttpRequest(uri))
// resp
}