【问题标题】:making REST kinds of urls in simple servlet like {resource}/<id>在像 {resource}/<id> 这样的简单 servlet 中制作 REST 类型的 url
【发布时间】:2012-04-27 15:56:39
【问题描述】:

我正在制作一个基于 REST 的 Web 服务。

首先我想看到如下网址

 /{resource}
 /{resource}/<id>
 /{resource1}/<id>/{resource2}
 /{resource1}/<id>/{resource2}/<id>

如上如何制作 servlet url..? 我不喜欢使用任何框架。

【问题讨论】:

  • 不要尝试重新发明轮子。看看使用 Netbeans 的 JAX-RS,您会发现事情有多么简单。不要为永远不会完整的自定义解决方案而烦恼。使用向导,一切都会为您创建。创建您的实体并从您的实体创建您的 REST 服务
  • 有很多 REST 开发库,您可以使用 JERSEY、Spring MVC 等。
  • 如果有错误请纠正我,但大多数时候我意识到框架会使请求和响应变慢,因为大多数时候我们不会使用它们提供的所有资源。
  • Kuku,JAX-RS 或 Restlet 或任何 REST 服务库的开发人员已经满足了性能要求。也尽量做到标准,因为最终你很可能不会成为只有开发人员从事您正在从事的项目。

标签: java rest servlets


【解决方案1】:

Servlet API 不为这种映射提供任何特殊支持。

如果您想在没有第三方库的情况下执行此操作,则需要将您的 servlet 映射到 /{resource},将路径的其余部分设置为 request.getPathInfo(),并根据该值实现进一步的路由:

<servlet-mapping>
    ...
    <url-pattern>/resource</url-pattern>
</servlet-mapping>

.

public class ResourceServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        String path = request.getPathInfo();
        if (path == null) { // It's /resource
            ...
        } else if (path.matches("/\\d+")) { // It's /resources/<id> with integer id
            ...
        }
    }
}

但是,最好不要重新发明轮子并使用其中一种 JAX-RS 实现。

【讨论】:

  • 如果有错误请纠正我,但大多数时候我意识到框架会使请求和响应变慢,因为大多数时候我们不会使用它们提供的所有资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 2017-10-06
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
相关资源
最近更新 更多