вот моя структура маршрута
classA {
implicit def classARejectionHandler =
RejectionHandler.newBuilder()
.handle {
case MissingCookieRejection(cookieName) =>
complete(HttpResponse(BadRequest, entity = "No cookies, no service!!!"))
}
.handle {
case AuthorizationFailedRejection =>
complete((Forbidden, "You're out of your depth!"))
}
.handle {
case ValidationRejection(msg, _) =>
complete((InternalServerError, "That wasn't valid! " + msg))
}
.handleAll[MethodRejection] { methodRejections =>
val names = methodRejections.map(_.supported.name)
complete((MethodNotAllowed, s"Can't do that! Supported: ${names mkString " or "}!"))
}
.handleNotFound { complete((NotFound, "Not here!")) }
.result()
val route:Route = handleRejections(classARejectionHandler) {
concat(
path("event-by-id") {
get {
}
} ,
path("create-event") {
post {
}
}
}
classB {
implicit def classBRejectionHandler =
RejectionHandler.newBuilder()
.handle {
case MissingCookieRejection(cookieName) =>
complete(HttpResponse(BadRequest, entity = "No cookies, no service!!!"))
}
.handle {
case AuthorizationFailedRejection =>
complete((Forbidden, "You're out of your depth!"))
}
.handle {
case ValidationRejection(msg, _) =>
complete((InternalServerError, "That wasn't valid! " + msg))
}
.handleAll[MethodRejection] { methodRejections =>
val names = methodRejections.map(_.supported.name)
complete((MethodNotAllowed, s"Can't do that! Supported: ${names mkString " or "}!"))
}
.handleNotFound { complete((NotFound, "Not here!")) }
.result()
val route:Route = handleRejections(classBRejectionHandler) {
path("fileUploads") {
post {
}
}
}
}
class Demo extends App {
def main {
val a =new classA
val b = new ClassB
val routes = a~b
val bindingFuture = Http().bindAndHandle(MainRouter.routes, hostName, port)
}
}
теперь проблема в том, что когда я вхожу в маршрут localhost:8080/fileuploads
методом POST
с его параметрами, маршрут работает, когда
-
я удаляю отклонения из classA
это работает, когда я удаляю отклонения как из classA
, так и classB
маршрут не работает, когда
не работает, я имею в виду, я получаю ответ
Not here!
, то есть обработчик отклонения classA
handleNotFound
отклоняет маршрут classsB
потому что я иду по маршруту classB
Согласно моему пониманию, существует некоторая проблема в цепочке маршрутов, но мне нужно поместить разные маршруты в разные классы, это мое требование, как я могу прекратить получать отклонение желаемого маршрута от других цепочек обработчики отклонения маршрутов?