REST现在已成为开发Web服务的标准方法,涉及Java时,有许多可用的框架和库,例如JAX-RS, Restlet , Jersey , RESTEasy ,Apache CFX等,但是我鼓励Java开发人员使用Spring。 MVC开发RESTful Web服务。
可能有人会问, 为什么要使用Spring MVC Framework用Java开发RESTful Web服务? 有什么优势?为什么它比现有的其他框架和库更好?
好吧,我认为,使用Spring开发RESTful Web服务的最重要原因是您可以利用Spring MVC经验来开发RESTful Web服务,而无需学习新的框架或库,这意味着您可以快速推出您的REST API。
这是最大的优势之一,即利用您在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在Java中创建RESTful Web服务的7个理由
正如我在第一段中告诉您的那样,我们可以使用Spring MVC创建和使用RESTful Web服务。 现在,让我们更详细地了解这些支持,以便您可以充分利用它们,并快速开发您一直想要的RESTful服务。
1.在Spring MVC中,控制器可以处理所有HTTP方法的请求,这是RESTful Web服务的基础。 例如,您可以处理GET方法来执行读取操作, POST方法来创建资源, PUT方法来更新资源以及DELETE方法来从服务器中删除资源。
从Spring 3.2开始,您还可以处理PATCH请求。 顺便说一句,如果您不熟悉Spring MVC框架,那么应该首先看一下; Spring MVC初学者是一个不错的起点。
2.对于REST,数据的表示非常重要,这就是为什么Spring MVC允许您使用@ResponseBody批注和各种HttpMessgeConverterimplementations完全绕过基于View的呈现。
通过使用此功能,您可以直接向客户端发送响应,例如,客户端所需的资源以及客户端所需的格式。 请参阅此处以了解有关HttpMessageConvert和@ResponseBody批注的更多信息。
3. Spring 4.0版本添加了专用注释@RestController,以使RESTful Web服务的开发更加容易。
如果使用@RestController而不是@Controller注释控制器类,则Spring会将消息对话应用于控制器中的所有处理程序方法。
这意味着您不需要使用@ResponseBodyannotation注释每个方法。 这也使您的代码更加简洁。
4. REST Web服务和普通Web应用程序之间的主要区别之一是REST传递资源标识URI本身中的数据,例如/ messages / 101,而Web应用程序通常使用查询参数,例如/ messages?Id = 101。
如果您还记得的话,我们使用@RequestParam获取这些查询参数的值,但是不用担心,Spring MVC还提供了一个@PathVariable批注,可以从URL提取数据。 它允许控制器处理对参数化URL的请求。
5. RESTful Web服务的另一个关键方面是表示,表示同一资源可以以不同的格式表示,例如JSON,XML,HTML等。值得庆幸的是,Spring提供了几种视图实现和视图解析器,以将数据呈现为JSON , XML ,和HTML 。
例如,ContentNegotiatingViewResolver可以查看请求的文件扩展名或Accept标头,以查找客户端资源的正确表示形式。
6.与@ResponseBody批注类似,该批注用于将响应转换为客户端所需的格式(通过使用HttpMessageConverts),Spring MVC还提供了@RequestBody批注,该批注使用HttpMethodConverter实现将入站HTTP数据转换为传递给Java的Java对象。控制器的处理程序方法。
如果您通常不熟悉处理程序方法和Spring MVC,那么您也可以尝试3种学习Spring MVC的方法 。
7 。 Spring框架还提供了一个类似于JdbcTemplate的模板类RestTemplate和JmsTemplate,它们可以消耗REST资源。 您可以使用此类测试RESTful Web服务或开发REST客户端。
这些是Spring MVC框架的一些重要功能,可帮助开发RESTful Web服务。 就像我之前说的那样,我选择Spring来开发RESTful资源的最重要原因是我可以利用我对框架的现有知识,这意味着学习曲线并不困难。
如果从较高的角度来看,开发RESTful服务与开发Web应用程序并没有太大区别。
根本的区别是,在前者的情况下,我们主要与人类用户打交道,而在REST的情况下,我们必须与非人类用户打交道,主要是丰富的JavaScript客户端和移动应用程序。
然后,这种关键差异会导致其他差异,例如,适合于人类用户但不适用于非人类系统的数据以JSON或XML而非HTML表示。 如果您想在开始使用Spring开发生产级RESTful Web服务之前学习更多信息,那么REST with Spring课程是一个不错的起点。
您可能喜欢的其他Spring和REST资源
如何使用Spring Cloud构建微服务?
具有Spring Boot和Spring Cloud的微服务
Java中的Restlet,Jersey和RESTEasy之间的区别?
Spring MVC中DispatcherServlet的用途是什么?
如何在Java Web应用程序中启用Spring安全性?
Craig Walls的《春天在行动》
Spring Framework 5:初学者
感谢您阅读本文,如果您喜欢使用Spring开发RESTful Web服务的这些原因,请与您的朋友和同事分享。 如果您有任何疑问或反馈,请留言
From: https://hackernoon.com/why-use-spring-to-develop-java-web-services-ba0dcb2cafbf