Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
Last active October 25, 2023 22:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xuwei-k/0a82449099b0288575370fdf882bbea4 to your computer and use it in GitHub Desktop.
Save xuwei-k/0a82449099b0288575370fdf882bbea4 to your computer and use it in GitHub Desktop.
scalaVersion := "3.3.1"
run / fork := true
libraryDependencies += "org.playframework" %% "play-pekko-http-server" % "3.0.0"
libraryDependencies += "org.slf4j" % "slf4j-simple" % "2.0.9"
import play.api.BuiltInComponents
import play.api.Mode
import play.api.mvc._
import play.api.routing._
import play.api.routing.sird._
import play.core.server.PekkoHttpServer
import play.core.server.ServerConfig
object Main {
// 1つのScalaファイルで済むので、
// routesファイルを別に書かずにScalaコードで直接DSL書く方法で書いてる
// https://www.playframework.com/documentation/2.8.x/ScalaSirdRouter
private def router(c: BuiltInComponents): PartialFunction[RequestHeader, Handler] = {
case GET(p"/$path") => c.defaultActionBuilder {
Results.Ok(s"hello $path") // ほぼechoするような意味ない実装
}
}
private val config = ServerConfig(
port = Some(0), // ゼロは雑に空いてる任意portで立ち上げの意味。省略したら9000
mode = Mode.Test // 真面目な用途の場合は避けるべきだが、Testだとapplication.conf必要ないので
)
def main(args: Array[String]): Unit = {
val server = PekkoHttpServer.fromRouterWithComponents(config)(router)
val port = server.httpPort.getOrElse(sys.error("not available http port"))
println(s"start http://localhost:${port}")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment