Echo simple HTTP server with Akka Http in Scala

I am developing a simple HTTP server using Akka-Http in Scala.

My code is as given below:

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())
    }
}

I do not know Scala enough yet. For that, I need some help.

I do not know how I can get JSON from Http POST body to give back that json to client.

Upvotes: 2

Views: 1038

Answers (1)

britter
britter

Reputation: 1392

You only need to add an extractor to your route definition:

  val route : Route = post {
    path("echo") {
      entity(as[String]) { json =>    
        complete(json)
      }
  }

Note that you don't need to set the status code explicitly, as akka-http will automatically set status 200 OK for you when you pass a value to complete

Upvotes: 4

Related Questions