在 Scala 中使用 Akka Http 回显简单的 HTTP 服务器
Echo simple HTTP server with Akka Http in Scala
我正在 Scala 中使用 Akka-Http 开发一个简单的 HTTP 服务器。
我的代码如下:
object HttpServer extends App {
override def main(args: Array[String]): Unit = {
implicit val system = ActorSystem("my-system")
implicit val materializer = ActorMaterializer()
implicit val executionContext = system.dispatcher
val route : Route = post {
path("echo") {
val json = ???
complete((StatusCodes.OK, json))
}
}
val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)
println(s"Server online at http://localhost:8080/\nPress RETURN to stop...")
StdIn.readLine()
bindingFuture.flatMap(_.unbind())
port.onComplete(_ => system.terminate())
}
}
我对 Scala 的了解还不够。为此,我需要一些帮助。
我不知道如何从 Http POST 正文中获取 JSON 并将 json 返回给客户端。
您只需要在路由定义中添加一个提取器:
val route : Route = post {
path("echo") {
entity(as[String]) { json =>
complete(json)
}
}
请注意,您无需显式设置状态代码,因为当您将值传递给 complete
时,akka-http 会自动为您设置状态 200 OK
我正在 Scala 中使用 Akka-Http 开发一个简单的 HTTP 服务器。
我的代码如下:
object HttpServer extends App {
override def main(args: Array[String]): Unit = {
implicit val system = ActorSystem("my-system")
implicit val materializer = ActorMaterializer()
implicit val executionContext = system.dispatcher
val route : Route = post {
path("echo") {
val json = ???
complete((StatusCodes.OK, json))
}
}
val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)
println(s"Server online at http://localhost:8080/\nPress RETURN to stop...")
StdIn.readLine()
bindingFuture.flatMap(_.unbind())
port.onComplete(_ => system.terminate())
}
}
我对 Scala 的了解还不够。为此,我需要一些帮助。
我不知道如何从 Http POST 正文中获取 JSON 并将 json 返回给客户端。
您只需要在路由定义中添加一个提取器:
val route : Route = post {
path("echo") {
entity(as[String]) { json =>
complete(json)
}
}
请注意,您无需显式设置状态代码,因为当您将值传递给 complete