使用Spring开发Java RESTful Web服务的7个理由
REST现在已成为开发Web服务的标准方法,涉及Java时,可以使用许多框架和库,例如JAX-RS,Restlet,Jersey,RESTEasy,Apache CFX等,但是我鼓励Java开发人员使用Spring框架来开发Java。开发RESTful Web服务。 但是,您可能会问, 为什么要使用Spring Framework在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如何支持RESTful Web服务?
正如我在第一段中告诉您的那样,我们可以使用Spring MVC创建和使用RESTful Web服务。 现在,让我们更详细地了解这些支持,以便您可以充分利用它们,并快速开发您一直想要的RESTful服务。
1.在Spring MVC中,控制器可以处理对所有HTTP方法的请求,这是RESTful Web服务的基础。 例如,您可以处理GET方法来执行读取操作,POST方法来创建资源,PUT方法来更新资源以及DELETE方法来从服务器中删除资源。 从Spring 3.2开始,您还可以处理PATCH请求。
2.对于REST,数据的表示非常重要,这就是为什么Spring MVC允许您使用@ResponseBody
批注和各种HttpMessgeConverter实现完全绕过基于View的呈现。
通过使用这两者,您可以直接向客户端发送响应,例如,客户端所需的资源以及客户端所需的格式。 在接下来的文章中,我将在此博客中写有关@ResponseBody
批注和HttpMessageConverter
更多信息。
3. Spring 4.0发行版添加了专用的@RestController
注释,以使RESTful Web服务的开发更加容易。
如果使用@RestController
而不是@Controller
注释控制器类,则Spring @RestController
消息对话应用于控制器中的所有处理程序方法。
这意味着您不需要使用@ResponseBody
注释对每个方法进行注释。 这也使您的代码更加简洁。 您可以在Spring的@Conroller和@RestController之间的差异中了解更多信息。
4. REST Web服务与普通Web应用程序之间的主要区别之一是,REST在URI本身中传递资源标识符数据,例如/ messages / 101,而Web应用程序通常使用查询参数,例如/ messages?Id = 101。
如果您还记得的话,我们使用@RequestParam
来获取那些查询参数的值,但是不用担心,Spring MVC还提供了一个@PathVariable
批注,可以从URL提取数据。 它允许控制器处理对参数化URL的请求。
您可以在Spring的@RequestParam
和@PathVaraible
之间的区别中了解有关@PathVariable
更多信息。
5. RESTful 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和REST资源 :
Java中的Restlet,Jersey和RESTEasy之间的区别?
Spring MVC中DispatcherServlet的用途是什么?
如何在Java Web应用程序中启用Spring安全性?
感谢您阅读本文,如果您喜欢这些使用Spring开发RESTful Web服务的原因,请与您的朋友和同事分享。 如果您有任何问题或反馈,请留下笔记。
翻译自: https://www.javacodegeeks.com/2018/01/7-reasons-use-spring-develop-restful-web-services-java.html
使用Spring开发Java RESTful Web服务的7个理由相关推荐
- Spring Boot 构建RESTful Web服务
Spring Boot 构建RESTful Web服务 本指南将引导您完成使用Spring 创建" Hello World" RESTful Web服务的过程. 你会建立什么 您将 ...
- java restful项目打包_构建入门Restful Web服务
创建资源类 假设你已经设置了项目和构建系统,你可以创建Web服务. 通过考虑服务交互来开始这个过程. 该服务将处理GET请求/greeting,可选地使用name查询字符串中的参数.该GET请求应该返 ...
- 构建入门Restful Web服务
创建资源类 假设你已经设置了项目和构建系统,你可以创建Web服务. 通过考虑服务交互来开始这个过程. 该服务将处理GET请求/greeting,可选地使用name查询字符串中的参数.该GET请求应该返 ...
- Spring 3 RESTful Web服务
Spring 3提供了对RESTful Web服务的支持. 在本教程中,我们将向您展示如何在Spring中实现RESTful Web服务 ,或者如何将现有的Spring服务公开为RESTful Web ...
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
Spring,构建 Java™ 平台和 Enterprise Edition (Java EE) 应用程序的著名框架,现在在其模型-视图-控制器(Model-View-Controller ,MVC) ...
- 使用Java的RESTful Web服务
REST代表"代表性状态转移",由Roy Fielding于2000年在其论文"建筑风格和基于网络的软件体系结构设计"中首次提出. REST是一种建筑风格. H ...
- Spring3 RESTful Web服务
Spring 3提供了对RESTful Web服务的支持. 在本教程中,我们将向您展示如何在Spring中实现RESTful Web服务 ,或者如何将现有的Spring服务公开为RESTful Web ...
- 使用Spring MVC开发Restful Web服务
REST简介 摘自Wikipedia: REST风格的体系结构由客户端和服务器组成. 客户端向服务器发起请求: 服务器处理请求并返回适当的响应. 请求和响应围绕资源表示的传递而构建. 资源本质上可以是 ...
- Spring Restful Web服务示例 - 使用JSON/Jackson和客户端程序
Spring Restful Web服务示例 - 使用JSON/Jackson和客户端程序 Spring是最广泛使用的Java EE框架之一.我们之前已经看到了如何使用Spring MVC来创建基于J ...
最新文章
- LaTex中的任意以及存在符号以及{}
- java treeset 删除_删除Java TreeSet中的最高元素
- Windows 程序员必备的知识和工具
- 4.状态间的六种转换情况
- 这5部不容错过的超高评价纪录片,带你领略地球的魅力!
- 【转】ABP源码分析三十:ABP.RedisCache
- arduino naon介绍_Arduino Nano 自制版
- 基础编程题目集 6-3 简单求和 (10 分)
- Head First设计模式读书笔记四 简单工厂 工厂模式 抽象工厂模式
- requestmapping配置页面后_第004课:Spring Boot 项目属性配置
- Jquery的load加载本地文件出现跨域错误的解决方案
- Ubuntu下安装微信
- 通过adb和python直接传输Android截图到电脑(windows适用)
- FAT文件系统存储原理
- 互联网 必须有免费的精神
- 血管老化30岁就开始!别怕,吃它就能搞定,让血管保持年轻~
- composer设置国内源
- #python#编程求主对角线元素之和
- 【博学谷学习记录】超强总结,用心分享丨一种创新的表格
- 燃气事故现场处置应急预案
热门文章
- 动态规划训练15 [Monkey and Banana HDU - 1069 ]
- java实现下载时进度条提示
- Memcached总结
- MySQL datediff()函数
- 【Android】实现页面跳转
- 使用ListView控件展示数据
- java实现人脸识别(使用百度云V3版本)
- ssh(Spring+Spring mvc+hibernate)——EmpController
- java 限制文本框长度_[Java教程]如何限制textarea文本框的输入字数
- idea无法启动Tomcat