Маршруты распыления - ранний отказ?
Моя маршрутизация похожа на это:
pathPrefix("api") {
path("login") {
entity(as[LoginRequest]) { login =>
complete { ... }
}
} ~
pathPrefix("persons") {
pathEnd {
get { ctx => ctx.complete(model.getPersons) }
} ~
path("new") {
post {
entity(as[Person]) { person =>
complete { model.addPerson(person).map { _ => StatusCodes.Accepted }
}
}
} ~
path(IntNumber) { id =>
delete {
complete {
model.deletePerson(id).map { _ => StatusCodes.Accepted }
}
}
}
} ~
path("app" / Rest) { path =>
get {
getFromResource("app/%s" format path)
}
}
}
Моя проблема в том, что коды ошибок выключены.
При запросе POST с недействительным документом в / api / people / new я ожидал бы получить код ответа InvalidEntity, но я получаю 405: метод не разрешен, поддерживается: GET.
То же самое с /api/login.
Если объекты верны, запускается правильный маршрут.
Если я выдаю DELETE для / api / people /invalidnumber, я получаю 405 вместо 404
Если я запускаю GET для этих маршрутов, я получаю 404. Может быть, последний маршрут пытается запустить - getFromResource?
Есть ли способ форсировать "скорейшее возвращение" с маршрутов? Такие как entity(as[LoginRequest]) { ... } ~ failWithPreviousRejection