我有一条路线,可以将传入的实体分解为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格式时,会发生什么?
答案 0 :(得分:1)
当您拥有@Repository
时,entity(as[T])
用于召唤as[T]
的实例-然后根据解组器返回的结果,FromRequestUnmarshaller[T]
将继续传递{{ 1}}进入关闭状态,否则entity
失败。
如果您需要处理有关拒绝的信息,那么可以使用T
之类的方法,可以在Directive
之前调用。
例如:
recover
应该让您查看输入是否被拒绝,并手动恢复/处理。