REST和RESTful WS

时间:2016-09-04 11:08:09

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

我从事过高级(非常详尽)的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与此有什么关系?我很难理解这两个实体之间的关系。

任何人都可以用简单的语言帮助我理解这一点。

2 个答案:

答案 0 :(得分:1)

  

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

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

答案 1 :(得分: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只是隐藏了你不必要的细节,让你的生活更轻松。

我希望它变得更加清晰:)