Маршруты распыления - ранний отказ?

Моя маршрутизация похожа на это:

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

0 ответов

Другие вопросы по тегам