Ratpack 处理程序 - 如何添加多个前缀

Ratpack handlers -how to add more than one prefixes

我正在尝试为我的应用程序添加某种 hello/name(用于运行状况检查),但我不想执行我的 chainAction 的那一部分。

.handlers(chain -> chain
                .prefix("api", TaskChainAction.class))
        );

如何在不使用 "api" 前缀的情况下添加第二个问候语?

我试过了

.handlers(chain-> chain
                    .get("/:name", ctx -> ctx.render("Hello"+ctx.getPathTokens().get("name"))))
                .handlers(chain -> chain
                    .prefix("task", TaskChainAction.class))
            );

.handlers(chain-> chain
                    .get("/:name", ctx -> ctx.render("Hello"+ctx.getPathTokens().get("name"))))
                .handlers(chain -> chain
                .prefix("task", TaskChainAction.class))

运气不好..

我可以添加第二个前缀,例如 /greetings/hello。添加第二个前缀也不起作用。

我正在使用 1.4.6 版本的 ratpack。感谢任何帮助

这是我在 ratpack.groovy 文件中使用的多路径处理程序链:

handlers{
  path("path_here"){
    byMethod{
      get{
        //you can pass the context to a handler like so:
        context.insert(context.get(you_get_handler)}
      post{
        //or you can handle inline
       }
    }
 }
 path("another_path_here") {
        byMethod {
            get {}
            put {}
     }
 }

顺序在处理程序链中非常重要。请求从上到下流动,因此您的最不具体的绑定应该在底部。

对于您想要做的事情,您可以这样做:

RatpackServer.start(spec -> spec
  .handlers(chain -> chain
    .prefix("api", ApiTaskChain.class)
    .path(":name", ctx -> 
      ctx.render("Hello World")
    )
  )
);

此外,您不应将 / 显式添加到您的路径绑定中。绑定在其当前链中的位置决定了前面的路径,因此 / 是不必要的。