基于Restful的API
近期的项目中用到了REST风格的API设计, 和传统的API相比,REST更面向服务,也更减少了程序的耦合度。而且在今后的一大段时间里,REST风格的设计将会越来越流行。
我之所以敢这么说,因为Spring3.X中引入了全面的REST支持:
因为新浪微博用的就是Restful的API设计,因为最新版本的JDK中也加入了REST的支持。当然现在已经有好多的公司采用了这套风格的设计。这些足以说明今后在API设计上的一个方向。当然,spring的支持是一个巨大的推动力,我发现哪里都有他的影子啊!!
在五花八门的技术里,你很容易发现,基于SOA的开发与REST有那么点儿相似,然后你会思考到底选择哪种方式更好,这个问题稍后再讨论。接下来先简单表述一下REST。
REST(REpresentational State Transfer),中文翻译为表述性转移。这个概念在Roy Thomas Fielding的paper中得到了很好的论证。文章的题目叫《Architectural Styles and the Design of Network-based Software Architectures》,是一篇架构描述不可多得的文章,非常值得一看。
REST的风格主要有以下特点:
1、REST风格 的服务是通信无状态的(communicate statelessly)
从客户端向服务器发出的每一次请求都必须包含理解该请求的所有必须信息。不能利用服务器上的上下文。
2、具有统一的接口。
如:GET、POST、DELETE、PUT等,这些接口能基本完成日常所需的CRUD操作。
3、所有信息都被抽象为资源,并用一个URI唯一标识。
4、REST组件通过交换资源的表述来对资源进行处理,资源的多重表述。
如后台的多样化返回:XML或JSON等。这是REST和RPC(Remote Procedure Call)方法的主要区别。
REST强调的是组件交互的伸缩性,接口的通用性,组件部署的独立性。以JWS为例,在实际开发中可以用XSLT和JAXP完成数据的转换工作。所以,我们可以用JWS方式来部署REST服务。又回到了之前提出的疑问了,SOA这样的架构或者拿CXF写的服务和REST之间到底有什么区别。
个人认为,使用REST风格来做服务的话,对程序的侵入性可以讲到很低,不用像传统的WSDL开发那样,往自己程序里写东西。而且REST的统一接口有利于服务的维护。当然也正是因为使用这些统一接口使得服务的灵活性不是那么的好,虽然减少了服务端的开发量,但是增加了前台的开发量。所以我觉得可以将两者结合开发,针对那些通用的,对外的可用REST风格包装成Facade,而那些特定的,需要订制的,则采用SOA的方式部署。
下面说说最近项目里用到的Restful框架,RESTLET。
摘一段官方的introduction吧:
The Restlet Framework is composed of two main parts. First, there is the "Restlet API", a neutral API supporting the concepts of REST and facilitating the handling of calls for both client-side and server-side applications. This API is backed by the Restlet Engine and both are now shipped in a single JAR ("org.restlet.jar").
This separation between the API and the implementation is similar to the one between the Servlet API and Web containers like Jetty or Tomcat, or between the JDBC API and concrete JDBC drivers.
Demo的源码官网上也都会有,这个框架还是不错的,而且有相应的discussion论坛。http://restlet-discuss.1400322.n2.nabble.com/
下面是一篇很好的关于Restlet的文章:
来自InfoQ: http://www.infoq.com/cn/articles/restlet-for-restful-service
最后我想用Dr. Roy Thomas Fielding文中的一段描述REST的文章来总结这个小节:
REST is a coordinated set of architectural constraints that attempts to minimize latency and network communication while at the same time maximizing the independence and scalability of component implementations. This is achieved by placing constraints on connector semantics where other styles have focused on component semantics. REST enables the caching and reuse of interactions, dynamic substitutability of components, and processing of actions by intermediaries, thereby meeting the needs of an Internet-scale distributed hypermedia system.
以上只是一种思路,具体的实现网上应该都有成篇的代码。个人愚见,谢谢观看。
本文原创,转载请指明出处,谢谢。

- 大小: 88.8 KB

- 大小: 7.8 KB
分享到:
相关推荐
【标题】:“毕业设计-基于Restful API的项目实施管理系统” 该项目是一个毕业设计,核心是构建一个基于Restful API的项目实施管理系统。Restful API是一种Web服务设计模式,它遵循了Representational State ...
待办事项清单本项目使用Gin+ Gorm,基于RESTful API实现的一个步骤。这个项目比较适合小白入门web开发这方面详细教程注意,最新版本是v2B站:v1版本https://www.bilibili.com/video/BV1GT4y1R7tX重构v2版本...
该项目是一款基于RESTful API的Java语言开发的多租户后端即服务堆栈Usergrid,源码包含4022个文件,涉及多种编程语言,其中Java文件2097个,PNG图片274个,JavaScript文件199个,HTML文件171个,以及少量PHP、Shell...
SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验 本实验的主要目标是使用SpringBoot、Mybatis和CXF框架来实现Restful API和WebService API接口的大实验。下面是实验的详细介绍: 标题...
基于 RESTful 架构的 API 设计原则和规范 RESTful 架构是目前最流行的一种互联网软件架构,它结构清晰、符合标准、易于理解、扩展方便,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。因此...
本文将深入探讨如何使用C和C++来实现HTTP服务,并开发RESTful API服务器。 首先,HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器。它是一个基于请求与...
【标题】"lighttpd RESTful API与CGI的整合" 在Web开发中,轻量级HTTP服务器(如lighttpd)因其高效、低资源占用而受到青睐,尤其适合小型和中型项目。RESTful API设计模式是现代Web服务的重要组成部分,它允许通过...
RestfulApi服务端是现代Web应用开发中常用的一种设计风格,它基于HTTP协议,通过不同的HTTP方法(GET、POST、PUT、DELETE等)来实现资源的获取、创建、更新和删除操作,使得API接口更加清晰、简洁且易于理解。...
**RestFul API 知识点详解** REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以数据为中心,强调资源的状态转移。RESTful API是遵循REST原则设计的Web服务接口,...
"基于 Go 语言构建企业级的 RESTful API 服务企业级go gin 开发框架 附带源码" 本小册将指导读者如何使用 Go 语言构建企业级的 RESTful API 服务,涵盖了从准备阶段到部署阶段的各个流程。小册的内容包括如何安装和...
### 基于 Go 语言构建企业级的 RESTful API 服务 #### 一、概述 本文档旨在介绍如何利用 Go 语言构建一个稳定、高效的企业级 RESTful API 服务。Go 语言以其简洁的语法、强大的并发能力及内置的 HTTP 服务器库等...
基于Laravel框架的RESTful API构建 本文主要介绍了基于Laravel框架的RESTful API构建方法,旨在解决异构系统之间的互联与集成问题。RESTful API是一种主流的Web服务开发范式,它能够提供一种简单、可靠、可扩展的...
本项目聚焦于使用nupic(Neural Predictive Information Caching)框架来实现一个基于RESTful API的异常检测系统。nupic是一个开源的智能计算框架,它利用了神经网络模型来处理时间序列数据,擅长发现模式并进行预测...
在`src/main/java`下创建一个新的包,例如`com.example.restfulapi.controller`,然后在此包中创建一个名为`DemoController`的类。使用`@RestController`注解标记该类为REST控制器,使用`@RequestMapping`定义根路径...
- 根据 ProgrammableWeb 的统计,大多数流行的 Web 服务都是基于 RESTful API 构建的。这表明 RESTful API 已经成为行业标准,掌握这项技术对于职业发展至关重要。 3. **技术优势**: - RESTful API 相比传统的 ...
RESTful API 的设计基于 Roy Fielding 在其论文《架构风格与基于网络的应用》中提出的 REST 原则。这些原则的核心在于将 API 分割成逻辑资源,并使用 HTTP 请求来控制这些资源。主要的 HTTP 方法包括 GET、POST、PUT...
本项目“基于tp5的restfulapi风格接口oauth20接口版本管理”旨在利用ThinkPHP5框架实现一个支持OAuth2.0授权协议的RESTful API,提供接口版本管理功能,这在现代Web服务和移动应用开发中至关重要。 首先,让我们...
"Laravel开发-restfulapi"的主题着重于使用Laravel框架创建RESTful API。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以资源为中心,通过统一的接口进行交互。 ...
### RESTful API 设计指南 随着信息技术的飞速发展,前端设备种类繁多,从前的单一桌面电脑到如今的智能手机、平板电脑以及其他专用设备等,这些变化促使了前后端分离的趋势更加明显。为了确保不同前端设备能高效地...