我有两条路线如下:
1)/ company /:companyId / brand /:brandId / order /:orderId
2)/ company /:companyId / brand /:brandId / order / getOrders?count = 10
当我尝试调用第二个路由时,将调用第一个路由。此外,如果第一个路由不存在,则第二个路由成功调用。 我不确定第一条路线是如何调用的,即使它没有“getOrders'路径URI。在匹配路径URI时如何选择它?
答案 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 -> ...)