如何知道解壳是否成功

时间:2019-07-23 14:26:36

标签: scala akka-http

我有一条路线,可以将传入的实体分解为case类。

final case class ProducerMessage(topic: String, event: String, data: spray.json.JsObject)


object ProducerServer {

  private val route: Route =   
    path("producer") {
        post {
          entity(as[ProducerMessage]) { msg =>
            //complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Say hello to akka-http</h1>"))
          }
        }
      }

  def create(): Future[ServerBinding] {
    Http().bindAndHandle(route, getServerIp, getServerPort)
  }

} 

我怎么知道解壳过程是否成功? 当收到的数据不是有效的JSON格式时,会发生什么?

1 个答案:

答案 0 :(得分:1)

当您拥有@Repository时,entity(as[T])用于召唤as[T]的实例-然后根据解组器返回的结果,FromRequestUnmarshaller[T]将继续传递{{ 1}}进入关闭状态,否则entity失败。

如果您需要处理有关拒绝的信息,那么可以使用T之类的方法,可以在Directive之前调用。

例如:

recover

应该让您查看输入是否被拒绝,并手动恢复/处理。