给出具有任何需求的案例类
case class Foo(id: Int, value: Int) {
require(value < 0 "value must be bigger than zero")
}
是否可以将此消息发送给http?
val routes = pathPrefix("foos") {
pathEnd {
post {
entity(as[Foo]) { foo =>
saveFoo(foo) match {
case Success(p) => {
complete(StatusCodes.Created)
}
case Failure(f) => {
println(f.getMessage) // unknown error
complete(BadRequest, f.getMessage)
}
}
}
}
}
答案 0 :(得分:1)
Akka-HTTP基础结构已经将解组过程中发生的所有错误转换为400 (BadRequest)
错误,并且将自动使用异常消息。
使用相同的代码,我可以免费获得该行为。我做了一些小改动:
业务逻辑错误现在为500
,以避免混淆
案例类要求现在与消息一致(>
是必需的,而不是<
)。
case class Foo(id: Int, value: Int) {
require(value > 0, "value must be bigger than zero")
}
def saveFoo(foo: Foo): Try[Unit] = Success(())
val route = pathPrefix("foos") {
pathEnd {
post {
entity(as[Foo]) { foo =>
saveFoo(foo) match {
case Success(p) => {
complete(StatusCodes.Created)
}
case Failure(f) => {
println(f.getMessage) // unknown error
complete(StatusCodes.InternalServerError, f.getMessage)
}
}
}
}
}
}