2016-09-04 3 views
0

Я хочу иметь базовый маршрут, который получает IntNumber и делать некоторые проверки с базой данных, чтобы узнать, правильны ли эти значения или нет, а затем Если значение правильное, я хочу распространять значение на дочерние маршруты.Распространять/передавать значение пути дочерним маршрутам akka http

Base Route

class BaseServiceRoute extends PathDirectives with SecurityDirectives { 

    val baseUserRoute = pathPrefix("user"/IntNumber) 

} 

Как я могу сделать некоторые проверки для IntNumber значения и делегирует значение для ребенка маршрут? Директивы?

Детский Маршрут

class CategoryServiceRoute(implicit executionContext: ExecutionContext) extends BaseServiceRoute { 

val route = baseUserRoute { userId => 
    pathPrefix("category") { 
    pathEndOrSingleSlash { 
     get { 
     complete(s"$userId") 
     } 
    } ~ 
     path(LongNumber) { categoryId => 
     get { 
      complete(s"$categoryId") 
     } ~ 
      post { 
      complete("Hello category post") 
      } 
     } 
    } 
    } 
    } 

Благодаря

ответ

2

Наиболее практика предложение было бы просто гнездиться маршруты, так что вы можете получить доступ к значению от внешнего маршрута, как это:

pathPrefix("user"/IntNumber) { userId => 
    pathPrefix("category") { 
    pathEndOrSingleSlash { 
     get { 
     complete(s"$userId") 
     } 
    } 
    } 
} 

Однако вы, кажется, хотите разделить маршруты на несколько частей, что отлично. В этом случае просто сделать ребенка маршрут прохождения def:

def childRoute(userId: Int): Route = 
    pathPrefix("category") { 
    pathEndOrSingleSlash { 
     get { 
     complete(s"$userId") 
     } 
    } 
    } 

, а затем использовать его как это:

baseUserRoute(childRoute) 
Смежные вопросы