我是 vertx 的新手,所以也许我做错了什么。我正在尝试实现以下路线:
router.get("/api/users/").handler(this::getUsers);
router.route("/api/users/:username*").handler(this::checkUsername);
router.get("/api/users/:username/").handler(this::getUser);
router.put("/api/users/:username/").handler(this::addUser);
router.get("/api/users/:username/assignments/").handler(this::getAssignments);
router.post("/api/users/:username/assignments/").handler(this::addAssignment);
router.route("/api/users/:username/assignments/:assignmentId/").handler(this::checkAssignmentId);
router.get("/api/users/:username/assignments/:assignmentId/").handler(this::getAssignment);
这是避免在所有处理程序中重复此逻辑的正确方法吗?
我正在尝试链接处理程序,其中checkUsername
处理程序从路径中读取username
参数,尝试找到相应的用户,并将该用户置于上下文中。如果未找到用户,则返回状态码 400。否则调用下一个处理程序。我想对assignmentId
参数应用相同的原则。
在尝试实现这一点时,我相信我发现路径存在问题,更具体地说是尾部斜杠和星号。该文档指出尾随斜杠被忽略。当路径中有参数时,这不是行为。在这种情况下,斜杠很重要。如果路径定义包含一个而请求不包含,则vertx返回404。参数是在路径的末尾还是在中间都没有区别。
以星号结尾的路径也是如此。当路径包含参数时,此功能不起作用。