私はAkka HTTP(Scalaで)を使用してRESTサービスを行っています。私は、ZonedDateTime型に変換するためにhttp get要求に渡されるパラメータが必要です。 StringまたはIntを使用しようとするとZonedDateTime型で失敗するとコードはうまく動作します。コードはそのようになります。ここではScala Akka java.time.ZonedDateTimeとしてのHTTPキャストパラメータ
parameters('testparam.as[ZonedDateTime])
は私が見ているエラーです:
Error:(23, 35) type mismatch;
found : akka.http.scaladsl.common.NameReceptacle[java.time.ZonedDateTime]
required: akka.http.scaladsl.server.directives.ParameterDirectives.ParamMagnet
parameters('testparam.as[ZonedDateTime]){
私はリストに複数のパラメータを追加した場合、私は別のエラーを取得:
をError:(23, 21) too many arguments for method parameters: (pdm: akka.http.scaladsl.server.directives.ParameterDirectives.ParamMagnet)pdm.Out
parameters('testparam.as[ZonedDateTime], 'testp2){
http://doc.akka.io/japi/akka-stream-and-http-experimental/2.0/akka/http/scaladsl/server/directives/ParameterDirectives.htmlの問題を調査していて、import akka.http.scaladsl.server.directives.ParameterDirectives.ParamMagnet
を追加しても、Scala 2.11を使用しても問題を解決できませんでしたが、問題が解決しませんでした。
誰かが私が間違っていることと、なぜZonedDateTimeタイプが機能しないのか説明してもらえますか?前もって感謝します!ここで
は私がZonedDateTime
として
import java.time.ZonedDateTime
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model._
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer
import scala.io.StdIn
object WebServer {
def main(args: Array[String]) {
implicit val system = ActorSystem("my-system")
implicit val materializer = ActorMaterializer()
// needed for the future flatMap/onComplete in the end
implicit val executionContext = system.dispatcher
val route =
path("hello") {
get {
parameters('testparam.as[ZonedDateTime]){
(testparam) =>
complete(testparam.toString)
}
}
}
val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)
println(s"Server online at http://localhost:8080/\nPress RETURN to stop...")
StdIn.readLine() // let it run until user presses return
bindingFuture
.flatMap(_.unbind()) // trigger unbinding from the port
.onComplete(_ => system.terminate()) // and shutdown when done
}
}