我正在使用嵌入式 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 允许我实现这个目标吗?我可以设置更智能的路径吗?
最佳答案
我相信这是不可能的。看起来 jetty 跟随Java Servlet Specification ,那么星号可以位于路径的开头或末尾。
以下是规范中的引用:
- A string beginning with a ‘*.’ prefix is used as an extension mapping
- A string beginning with a ‘/’ character and ending with a ‘/*’ suffix is used for path mapping.
请参阅“12.2 映射规范”了解更多详细信息。
因此,您应该在 Foo 类中分析 request.getPathInfo()
或使用一些可以为您完成此操作的框架,f.x。 Spring MVC或Jersey
关于java - 带有嵌入式 Jetty 服务器的 REST 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25338829/