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

私の問題は、エラーコードがオフになっていることです。

無効なドキュメントを含む POST を /api/persons/new にクエリすると、InvalidEntity 応答コードが返されるはずですが、405: Method not allowed, supported: GET が返されます。

/api/login と同じです。

エンティティが正しい場合、正しいルートが実行されます。

/api/persons/invalidnumber に対して DELETE を発行すると、404 ではなく 405 が返されます。

これらのルートに対して GET を実行すると、404 が返されます。最後のルートが getFromResource を実行しようとしている可能性があります。

ルートから「早期復帰」を強制する方法はありますか? そのようなentity(as[LoginRequest]) { ... } ~ failWithPreviousRejection

4

0 に答える 0