【问题标题】:REST and RESTful WSREST 和 RESTful WS
【发布时间】:2016-09-04 11:08:08
【问题描述】:

我曾从事高水平的 RESTful Web 服务(不是很详尽),编写过一些基于 REST 的 Web 服务。

为了开始我的 RESTful WS 之旅,我阅读了在线文章(wiki、在线教程等),我开始知道它是一种指定约束的架构风格,当应用于 Web 服务时会产生理想的属性,例如性能、可扩展性等。好的,这是这个概念的理论部分。

一个使用JAX-RS的简单例子:

@Path("/simple")
public class SimpleRESTService {

    @GET
    @Path("/{param}")
    public Response getMsg(@PathParam("param") String message) {
        String output = "Jersey say : " + message;
        return Response.status(200).entity(output).build();
    }
}

我的疑问是:

如果 REST 是架构风格(并使用这些准则构建 RESTful Web 服务),JAX-RS 会做什么?据我了解,REST 只是架构风格而不是任何规范,JAX-RS 与此有什么关系?我很难理解这两个实体之间的关系。

谁能用简单的话帮我理解一下。

【问题讨论】:

    标签: java web-services rest jersey jax-rs


    【解决方案1】:

    REST 确实是一种构建 Web 服务的架构风格,独立于应用层协议(它也可以通过 FTP 或 HTTP 实现)。

    JAX-RS 只是 Java EE 的一个标准化 API,您可以使用它轻松地在 Java 中实现 RESTful 服务。它是一个工具包,可以让开发人员卸下肩上的重担,并且作为 Java EE 的一部分,它在开箱即用的 WildFly 等应用服务器中实现。

    但请注意,可以使用 Spring Web MVC 和 Spring HATEOAS 模块在 Spring 等框架中创建 REST 服务。

    编辑:
    尽管 REST 是一种定义明确的架构风格,但它(正如您所提到的)不是规范,因此在开发人员中存在很多关于它的模糊区域。

    简而言之,它只是说“嘿,伙计,如果您以这种方式和这种方式使用通信协议(例如 HTTP),您可以非常方便地更改和扩展,并且对于您服务的客户与您交谈”。

    JAX-RS 使您能够使用动态部分定义服务端点(例如:/api/jediknights/{id},因此 id 可以是任何东西),从而更容易以格式响应客户端您(或您的客户)的愿望,如 XML 或 JSON。它提供了方便的包装器对象来包装您的响应正文以及状态代码和标头以及许多其他方便的东西。

    但要注意的是:作为开发人员,您仍然有责任遵守 REST 风格规定的原则。 JAX-RS 并没有真正强制您执行任何操作。

    说句公道话,您甚至可以通过仅使用较低级别的 Servlet API 来实现 RESTful Web 服务。 JAX-RS 只是对您隐藏不必要的细节,让您的生活更轻松。

    我希望它变得更清楚:)

    【讨论】:

    • 感谢您的回复。 JAX-RS 在 REST WS 的上下文中做了什么?绝对它们本身不是 RESTful WS 实现。那么它们到底是什么?如果您能详细说明您的回复,那将很有帮助。
    • 感谢您扩展您的回复,现在很清楚 :)。接受您的解释作为我问题的答案。非常感谢!
    【解决方案2】:

    用于 RESTful Web 服务 (JAX-RS) 的 Java API,如果 API 用于 开发人员 REST 服务。 JAX-RS 是 Java EE6 的一部分,并且使 开发人员轻松开发 REST Web 应用程序。

    您可以在此处阅读更多内容:http://www.mkyong.com/tutorials/jax-rs-tutorials/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 2014-10-17
      • 1970-01-01
      • 2014-07-21
      • 2012-07-04
      • 1970-01-01
      • 2010-12-06
      相关资源
      最近更新 更多