为什么在servlet可以完成同样的事情时使用Restful Webservices?

时间:2014-11-13 07:28:20

标签: java web-services rest servlets

我是一个完整的宁静网络服务新手。所以请耐心等待。我在宁静的WS上做了一个小POC。我之前曾在基于SOAP的服务(Jax-RPC)中工作过。我发现的直接差异在于这里没有WSDL。服务提供商托管的URL充当终点。我们通常会对基于jacksonjersey的请求参数使用jsonxml,并在截取请求的方法之前使用@get,@ post等注释,我们可以获取来自托管服务的参数,并将它们用于我们的利益。

现在,在我看来,我们可以在普通的servlet中做同样的事情。我们可以使用request.getParameter("param")方法中的doPost()来点击网址并从中获取请求参数和值。为什么我们需要在这里获得参数的宁静方式?

所以问题归结为:我们什么时候使用restful web服务?在这种情况下我们何时才使用简单的简单servlet?

原谅我对这个问题直言不讳,我只是想了解更多。

3 个答案:

答案 0 :(得分:4)

servlet可以正常工作。使用框架进行Web服务的好处与使用网站框架的价值相同。他们做了一些平凡的举动。例如,JAX-RS提供了更简单的URL路由,以及从/到XML / JSON和Java bean的简单绑定。

你可以免费获得#34;等等。

因此,框架可以简化开发,但它们肯定不是必需的。

答案 1 :(得分:1)

Restful WS有更方便的方法来产生响应和侦听路径URL。因此,使用注释可以创建更精细的资源URL结构。使用servlet,您必须自己解析查询字符串。支持的返回类型是另一种方便的加速。

另一个问题是,JAX-RS也运行在通常的CDI组件或EJB之上。您只需使用JAX-RS注释注释业务方法。编写servlet意味着锁定实现Servlets API。

答案 2 :(得分:1)

如果您只有一个终点,那么使用RestEasy或其他框架可能没有任何好处。

但在现实世界中,这些REST端点堆积起来,框架可以帮助控制事物。此外,他们还提供类型检查等方面的额外帮助。

所以举个例子:

@GET
@Path("/app/{applicationId}")
@Produces(MediaType.APPLICATION_JSON)
public AppJSON updateStoreData(@PathParam("applicationId") Long appId, @QueryParam("platform") Platform platform) throws RestException {

        AppJSON application = applications.getApp(appId, platform);
        return application;
    }

它描述了以/ app / applicationId 结尾的 GET 方法,其中 applicationId 应为Long值。此外,它还有一个类型为 Platform 的查询字符串参数。那些提供给服务方法,而服务方法又返回一些对象。然后输出转换为JSON格式。

框架照顾了很多事情:

  1. 将正确的网址映射到您的电话
  2. 自动解析路径和查询参数
  3. 类型检查和参数转换
  4. 返回值的转换
  5. 异常管理(如果你扔一个)
  6. 还有更多(如过滤和响应转换...)