2

我的路由是这样的:

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)
    }
  }
}

我的问题是错误代码已关闭。

在向 /api/persons/new 查询带有无效文档的 POST 时,我希望得到一个 InvalidEntity 响应代码,但我得到一个 405:不允许的方法,支持:GET。

与 /api/login 相同。

如果实体正确,则运行正确的路线。

如果我向 /api/persons/invalidnumber 发出 DELETE,我得到 405,而不是 404

如果我为这些路由运行 GET,我会得到 404。也许最后一条路由正在尝试运行——getFromResource?

有没有办法强制从路线“提前返回”?如entity(as[LoginRequest]) { ... } ~ failWithPreviousRejection

4

0 回答 0