【问题标题】:REST using HttpServletREST 使用 HttpServlet
【发布时间】:2016-10-01 22:40:01
【问题描述】:

据我了解,REST 是一种架构模式,其中像 Jersey 这样的框架提供了开箱即用的方法来指定 HTTP 的 GET/POST/DELETE 等方法。 Servlet 提供了一些基本功能,通过样板代码来处理网络请求。

我的问题是,即使 HttpServlet 也提供了像 doGet、doPost 这样的“do”方法,而且还可以指定路径/​​标题等。 那么通过 HttpServlet 的 doGet/doPost 暴露一个 webservice 是否符合 RESTful webservice 的要求?

【问题讨论】:

  • 是的,可以使用 servlet 编写 RESTful 服务。但是如果你想成为 RESTful,仅仅使用一个 servlet 是不够的。
  • @LutzHorn 你还需要什么?
  • 您必须遵循有关资源、HTTP 方法使用等方面的 REST 原则。

标签: java web-services rest servlets


【解决方案1】:

虽然您可以使用 Servlet 实现 Rest(并且有很多可用的框架可以做到这一点),但 Rest 是一种架构原则,它与 Servlet 甚至 Java 没有任何关系,就像 Servlet 是一种开放式架构一样,它可以让您实现各种东西,包括休息。所以有重叠,但仅此而已。

要使应用程序被视为 Restful,它需要实现以下部分或全部:

  • HTTP 动词的语义使用
  • 资源的定义(名词)
  • 正确使用 HTTP 标头和状态代码
  • 无国籍
  • 内容协商
  • HATEOAS(超媒体)

虽然您可以使用 servlet 从头开始​​完成所有这些工作,但最好还是重用现有框架并专注于自己的业务问题,而不是重新发明轮子。

有关 Rest 的更多信息,您可以参考上一个问题的答案:https://stackoverflow.com/a/671132/342852

【讨论】:

  • 但是 servlet 的 doGet/doPost 等方法不处理 HTTP 动词、状态码等吗?同样对于无状态,EJB 的@stateless 应该正确吗?不过我不确定内容协商。
  • 使用动词和正确使用它们不是一回事。每个人都可以使用画笔,但不是每个人都在使用画笔时创造艺术
猜你喜欢
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 2014-10-26
  • 2017-04-26
  • 1970-01-01
  • 2023-03-14
  • 2017-08-17
  • 2014-05-28
相关资源
最近更新 更多