Scala、Spray、および関数型プログラミングは初めてです。そして、Spray RestAPI の基本的な例をいまだに理解できないのはとても悲しいことです。
このブログ投稿の指示に従ってプログラムを作成しました。 http://www.smartjava.org/content/first-steps-rest-spray-and-scala
私のルート機能は次のとおりです。
val aSimpleRoute =
path("path1") {
println("in path path1..")
put {
println("in path path1/put..")
respondWithMediaType(MediaTypes.`text/html`) {
complete {
<h1>in path path1/put..</h1>
}
}
} ~ get {
println("in path path1/get..")
respondWithMediaType(MediaTypes.`application/json`) {
complete {
<h1>in path path1/get..</h1>
}
}
}
} ~
path("path2") {
println("in path path2..")
get {
println("in path path2/get..")
respondWithMediaType(MediaTypes.`application/json`) {
complete {
<h1>in path path2/get..</h1>
}
}
} ~ post {
println("in path path2/post..")
respondWithMediaType(MediaTypes.`application/json`) {
complete {
<h1>in path path2/post..</h1>
}
}
}
}
すべてが期待どおりに機能します。しかし、私の問題は、私のプログラムが開始されると、受信機能を介して実行されることです。プログラムが開始されたときのprintlnの出力を参照してください(httpリクエストを処理する前)
in path path1..
in path path1/put..
in path path1/get..
in path path2..
in path path2/get..
in path path2/post..
[INFO] [09/14/2015 12:56:01.364] [on-spray-can-akka.actor.default-dispatcher-4] [akka://on-spray-can/user/IO-HTTP/listener-0] Bound to localhost/127.0.0.1:8080
そのため、プログラムが開始されたときに、プログラムが可能なすべての呼び出しパスに入る理由を理解できません。また、HTTP リクエストを受信したときに、これらの println のいずれにも到達しません。
誰でも理由を説明できますか?