java - 带有嵌入式 Jetty 服务器的 REST 资源

标签 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 允许我实现这个目标吗?我可以设置更智能的路径吗?

最佳答案

我相信这是不可能的。看起来 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 MVCJersey

关于java - 带有嵌入式 Jetty 服务器的 REST 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25338829/

相关文章:

Java 和 crossdomain.xml

java - 在Java中通过txt文件创建对象到数组中

java - 编辑 JTable 行

path - mysql var/lib/mysql 目录不存在,无法启动 mysql 服务器

go - Go语言如何指定 `template.ParseFiles`的文件位置?

java - 黑莓:从嵌入式浏览器启动 native 浏览器

java - Netbeans 的 RESTful Java 客户端 : javax. ws.rs.NotAcceptableException:HTTP 406 Not Acceptable

c# - 使用 REST API 列出 Dropbox 文件

spring - 使用 Spring Data REST,为什么 @Version 属性变成 ETag 并且不包含在表示中?

path - 完美水平路径的 SVG 渐变