7

私はこのルートを持っています:

val routes =
    pathPrefix("api") {
      path("ElevationService" / DoubleNumber / DoubleNumber) { (long, lat) =>
        post {
          requestContext =>
            println(long, lat)
        }
      }
    }

これはうまく機能します。次のように呼び出すことができますElevationService

http://localhost:8080/api/ElevationService/39/80

問題は、リクエストで送信された本文を JSON として解析したいということです。次のようになります。

{
  "first": "test",
  "second": 0.50
}

エンティティ ディレクティブに関するドキュメントに従って、別のルートで動作させることができました。

path("test") {
   import scrive.actors.ScriveJsonProtocol
   import spray.httpx.SprayJsonSupport._
   post {
      entity(as[ScriveRequest]) { scrive =>
        complete(scrive)
      }
   }
}

しかし、これら 2 つのルートを 1 つにマージする方法がわかりません。それらは関数にラップされているため、関数内からparamslongを呼び出すことはできません。それらはそのスコープには存在しないと思います。同じか、その逆です。latentity

params と POST 本体の両方にアクセスできるようにしてから、すべてのデータを渡すサービスを呼び出したいと考えています。

val elevationService = actorRefFactory.actorOf(Props(new ElevationService(requestContext)))
elevationService ! ElevationService.Process(long, lat, bodyParams)
4

1 に答える 1