嵌入式Jetty服务器的REST资源

时间:2014-08-16 09:33:26

标签: java rest path jetty

我正在使用嵌入式Jetty服务器为REST服务创建POC。

我想创建以下资源;

/foo/{id}
/foo/{id}/bar

我要求每个人调用不同的类,每个类都访问路径中的id。

我有以下代码;

        Server server = new Server(7777);
        ServletHandler handler = new ServletHandler();
        server.setHandler(handler);

        handler.addServletWithMapping(DefaultServlet.class, "/*");
        handler.addServletWithMapping(Foo.class, "/foo/*");
        handler.addServletWithMapping(Bar.class, "/foo/*/bar");

不幸的是,这两个请求都会导致Foo.class。

Jetty是否允许我实现这一目标?我可以设置更智能的路径吗?

1 个答案:

答案 0 :(得分:2)

我相信这是不可能的。看起来像码头跟Java Servlet Specification一样,那么星号可以在路径的开头或者在路径的末尾。

以下是规范引用:

  
      
  • 以'*。'前缀开头的字符串用作扩展名映射
  •   
  • 以“/”字符开头,结尾后缀为“/ *”的字符串用于路径映射。
  •   

有关详细信息,请参阅“12.2映射规范”。

所以你应该在你的Foo类中分析request.getPathInfo()或使用一些可以为你做的框架,f.x。 Spring MVCJersey