REST现在已经成为开发Web服务的标准方式,而谈到Java时,有许多框架和库可用,例如JAX-RS,Restlet,Jersey,RESTEasy,Apache CFX等,但我鼓励Java开发人员使用Spring框架开发RESTful Web服务。但是,您可能会问, 为什么使用Spring框架在Java中开发RESTful Web服务?有什么优势,为什么它比其他可用的框架和库更好?那么,我认为使用Spring开发RESTful Web服务的最重要原因是您可以使用 Spring MVC体验来开发RESTful Web服务。
这是最大的优势之一,即利用您在Spring MVC方面多年的经验将您的应用程序公开为REST API。另一个原因是 Spring对开发RESTful Web服务提供了很好的支持。
在最后几个版本中,从Spring 3.0开始,它为Spring MVC提供了许多增强功能,以提供一流的REST支持。它提供了专门的注解如@RestController并@ResponseStatus做出RESTful资源的开发更加容易在Spring 4.0。
它不仅帮助您创建 RESTful Web服务,还提供了使用REST资源的类,例如,您可以使用RestTemplate
类来使用RESTful资源。
还有更多的实用程序类和注释使得Spring中RESTful Web服务的开发更加简单和无缝,我将在本文中分享其中的一些来证明我的观点,即使用Spring开发RESTful Web服务是正确的决定。
Spring如何支持REST风格的Web服务?
正如我在第一段中告诉你的,我们可以使用Spring MVC创建和使用RESTful Web服务。现在,让我们更详细地了解这些支持,以便您可以充分利用它们并快速开发您一直想要的RESTful服务。
1.在Spring MVC中,控制器可以处理所有HTTP方法的请求,这些方法是RESTful Web服务的骨干。例如,您可以处理GET方法执行读取操作,POST方法创建资源,PUT方法更新资源,以及使用DELETE方法从服务器中删除资源。从3.2版开始,您也可以处理PATCH请求。
2.对于REST,数据表示非常重要,这就是为什么Spring MVC允许您通过使用@ResponseBody注释和各种HttpMessgeConverter实现完全绕过基于视图的渲染。
通过使用这两个,你可以直接发送一个响应给客户端,比如客户端需要的资源以及他们想要的格式。
3. Spring 4.0版本添加了一个专用注释 @RestController,使RESTful Web服务的开发更加容易。
如果你注释你的控制器类@RestController而不是@ControllerSpring应用消息对话到控制器中的所有处理器方法。
这意味着您不需要使用注释来注释每个方法 @ResponseBody。这也使你的代码更加清洁。
4. REST Web服务和普通Web应用程序之间的主要区别之一是REST在URI本身传递资源标识符数据eg / messages / 101,而Web应用程序通常使用查询参数eg / messages?Id = 101。
如果您还记得,我们使用它@RequestParam来获取这些查询参数的值,但不用担心,Spring MVC还提供了一个@PathVariable可以从URL中提取数据的注释。它允许控制器处理对参数化URL的请求。
5. REST风格的Web服务的另一个关键方面是表示法,例如相同的资源可以用不同的格式表示,例如JSON,XML,HTML等。谢天谢地,Spring提供了几种视图实现和视图解析器来将数据呈现为JSON,XML和HTML。
例如,ContentNegotiatingViewResolver 可以查看请求的文件扩展名或Accept标头以找出客户端资源的正确表示。
6.与用于将响应转换为格式客户端想要的格式(通过使用)的@ResponseBody批注类似 HttpMessageConverts,Spring MVC还提供了 @RequestBody批注,该注释使用HTtpMethodConverter实现将入站HTTP数据转换为传递给控制器处理程序方法的Java对象。
7. Spring Framework还提供了一个Template类,RestTemplate类似于JdbcTemplate,并且JmsTemplate可以使用REST资源。您可以使用此类来测试您的RESTful Web服务或开发REST客户端。
我已经在我之前的博客文章中讨论了这个类,并且您可以看到本 教程中的一个实例,使用RestTemplate从Java中的RESTful Web服务使用JSON。
这些是Spring MVC框架的一些 重要特性,它们有助于开发RESTful Web服务。正如我所说的,选择Spring开发RESTful资源的最重要原因是我可以使用我现有的框架知识,这意味着没有陡峭的学习曲线。如果从高层看,开发RESTful服务与开发Web应用程序没有多大区别。
基本的区别在于,对于前者,我们主要处理人类用户,在REST的情况下,您必须处理非人类用户,主要是丰富的JavaScript客户端和移动应用程序。然后,这个关键差异会导出其他差异,例如以JSON或XML表示数据,而不是适用于人类用户但不适用于非人类系统的HTML。
感谢您阅读本文,如果您喜欢使用Spring开发RESTful Web服务,请与您的朋友和同事分享。如果您有任何问题或意见,请留言评论。
本文暂时没有评论,来添加一个吧(●'◡'●)