代码之家  ›  专栏  ›  技术社区  ›  joselufo

将路径值传播/委托给子路由akka http

  •  0
  • joselufo  · 技术社区  · 8 年前

    我希望有一个接收 IntNumber 并对数据库进行一些检查,以了解值是否正确,然后如果值正确,我想将值传播到子路由。

    基本路线

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

    谢谢

    1 回复  |  直到 8 年前
        1
  •  2
  •   jrudolph    8 年前

    最佳实践建议只是嵌套路由,这样您仍然可以从外部路由访问值,如下所示:

    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)