Vertx-web路由区分路径uri和路径参数

时间:2018-04-14 07:40:35

标签: routes vert.x

我有两条路线如下:

1)/ company /:companyId / brand /:brandId / order /:orderId

2)/ company /:companyId / brand /:brandId / order / getOrders?count = 10

当我尝试调用第二个路由时,将调用第一个路由。此外,如果第一个路由不存在,则第二个路由成功调用。 我不确定第一条路线是如何调用的,即使它没有“getOrders'路径URI。在匹配路径URI时如何选择它?

1 个答案:

答案 0 :(得分:1)

您定义路线的顺序很重要,首先是最具体的路线,在您的情况下是第二条路线。

router.get("/company/:companyId/brand/:brandId/order/getOrders?count=10").handler(ctx -> ...)
router.get("/company/:companyId/brand/:brandId/order/:orderId").handler(ctx -> ...)

其他选项,如果您的一个“上层”contextHandler发现它不负责处理请求(例如您的第一个不负责响应第二个请求),您可以致电next()关于上下文并返回

router.get("/company/:companyId/brand/:brandId/order/:orderId")
      .handler(ctx -> {
         if(shouldHandleRequest(ctx)) {
           //respond
           ctx...end();
         } else {
           ctx.next(); //skip to next handler
         });
router.get("/company/:companyId/brand/:brandId/order/getOrders?count=10")
      .handler(ctx -> ...)