RESTful再理解

简介: 目录目录前言RESTful的目的REST的含义表现层状态转化无状态协议HTTP最后前言这是在经过一段时间的积累后,对RESTFul框架的再一次更深入的理解。

目录

前言

这是在经过一段时间的积累后,对RESTFul框架的再一次更深入的理解。希望能够将零散的知识点连接成线,相织成面。

RESTful的目的

RESTful由Roy Thomas Fielding在2000年提出,旨在探索两大计算机学科方向–软件&网络 的交叉点。
软件开发:关注软件设计的分类、设计方法的实现。
网络开发:关注系统之间的通信行为的细节和如何改进特定通信机制的表现。
在传统的行业环境中,软件开发很少去评估不同的设计选择对系统行为的影响。在网络开发中也常常忽略了应用程序的交互风格改变比改变互动协议对整体的表现形式有着更大的影响。
而RESTful提出的目的,用设计者的话来说就是:希望在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。即RESTful架构设计风格的Web service是建立在网络传输协议HTTP上的特别的应用网站,或者应该称之为”软件”会更加符合REST的初衷。

REST的含义

REST(Representational State Transfer)表现层状态转换

表现层

在Web service的表现层中,Resource Request Handler会接收Client通过HTTP协议发送的无状态请求,在接收请求后再向业务逻辑层请求服务并执行结果返回给Client。除此之外,表现层中的Resource Request Handler还能够确定对自动化客户端公开的概念性实体,而这种实体是具有多种表现形式的数据或服务,也被称之为资源。同时还会为资源分配URI作为唯一的标识,在网络中访问这个URI就是获取一个资源。
需要注意的是:**URI只代表资源的实体,不表示资源的表现形式。我们需要在HTTP请求的头信息中用Accept和content-Type字段来指定相应的资源的表现形式。即:**URI指定资源、HTTP请求中的Accept、content-Type字段指定资源的表现形式
在不同的客户端中可能会请求同一个资源的不同表现形式,例如:我们请求Server中的同一个文本资源时,可能有人需要以XML格式获取、有人可能需要以JSON格式获取。这种格式的需求是由Client发出的请求确定的,而这种资源格式的转换是发生在表现层中的,先由Resource Request Handler对资源的格式进行确定后再做出响应。这种特性使得Web service可以部署到大量需求不同的客户端之中,并且由于无状态原则的特性,使得其非常适合运行在分布式系统中。

状态转化

这种状态指的是请求的状态而不是资源的状态。从客户端的角度出发,其可以通过HTTP的标准方法POST(新建)、DELETE(删除)、GET(获取)、PUT(更新)来操作和修改Server上的资源。而且这种转化建立在表现层中,所以称之为”表现层状态转化”。

无状态协议HTTP

为什么RESTful要加入无状态原则?
这是由于RESTful选择了HTTP协议来同时充当传输协议和应用协议。
那为什么RESTful要选择HTTP协议?
这是从RESTful的设计初衷决定的。Roy Thomas Fielding希望能够建立一个框架去实现基于网络协议的应用软件,而软件的形式就是”网站”,那么协议自然就是HTTP了。
协议的状态:指的是下一次传输能够”记住”这次传输信息的能力。有状态的请求会在Server对请求做出响应后,将请求的状态信息保存在Server的Session中,使得下一次Client传输的信息能够与这一次的请求相关联,从而Server能够再次做出应答。但是这也意味着没有保存过Client请求状态信息的Server无法随时与Client建立连接,这并不适合在分布式系统中使用,会造成很高的请求延迟。
相对而言,由于Web Server要面对很多浏览器的并发访问,为了提高Web Server对并发访问的处理能力,在设计HTTP协议时规定Web Server响应HTTP应答报文和文档时,不保存Client发出请求的Web浏览器进程的任何状态信息。这能够实现一个Client在短时间之内两次访问同一个Server对象时,Server进程不会因为已经给Client发过应答报文而不接受第二次的服务请求(并发访问)。出于上述的理由和为了保证服务器内存,Web Server不会保存发送请求的Web浏览器进程的任何信息,因此HTTP协议属于无状态协议。
基于HTTP协议的无状态特性,决定了RESTful风格的请求也是无状态的。这里的无状态指的是Server不会保留有请求的任何状态信息,那么久决定了每一个请求都必须包含有Server可以理解这个请求所需要的全部信息。

最后

RESTful这一设计风格,需要我们在理论和实践的结合中去理解。在往后的时间里,我们会尝试使用Python去实现连接Web service的RESTful API和实现RESTful API。

相关文章
|
安全 Java 网络架构
|
网络架构 API 数据格式
RESTful三理解
目录 目录 前言 Web应用的会话状态 Cookie 资源的表现形式 HATEOAS RESTful 资源 URI 前言 最近看了一篇很赞的RESTful博客,传送门:http://www.cnblogs.com/artech/p/3506553.html 本篇是RESTful的又一次理解笔记,将之前写过的文章做一个总结和消化,应该是关于RESTful的最后一篇基础理论文章,之后会向实践倾斜,通过编写Python RESTful API来更好的消化理论。
1328 0
|
1月前
|
JSON API 数据库
解释如何在 Python 中实现 Web 服务(RESTful API)。
解释如何在 Python 中实现 Web 服务(RESTful API)。
26 0
|
1月前
|
缓存 安全 测试技术
构建高效的RESTful API:后端开发的实践指南
【2月更文挑战第17天】在数字化转型的浪潮中,RESTful API已成为连接不同软件组件、实现数据交互的核心桥梁。本文将深入探讨如何构建一个高效、可扩展且安全的RESTful API,涉及设计原则、开发流程以及性能优化等关键方面。我们将透过实际案例,展示如何在保证简洁性和灵活性的同时,满足日益增长的业务需求和技术挑战。
|
11天前
|
安全 Java API
RESTful API设计与实现:Java后台开发指南
【4月更文挑战第15天】本文介绍了如何使用Java开发RESTful API,重点是Spring Boot框架和Spring MVC。遵循无状态、统一接口、资源标识和JSON数据格式的设计原则,通过创建控制器处理HTTP请求,如示例中的用户管理操作。此外,文章还提及数据绑定、验证、异常处理和跨域支持。最后,提出了版本控制、安全性、文档测试以及限流和缓存的最佳实践,以确保API的稳定、安全和高效。
|
13天前
|
小程序 前端开发 API
小程序全栈开发中的RESTful API设计
【4月更文挑战第12天】本文探讨了小程序全栈开发中的RESTful API设计,旨在帮助开发者理解和掌握相关技术。RESTful API基于REST架构风格,利用HTTP协议进行数据交互,遵循URI、客户端-服务器架构、无状态通信、标准HTTP方法和资源表述等原则。在小程序开发中,通过资源建模、设计API接口、定义资源表述及实现接口,实现前后端高效分离,提升开发效率和代码质量。小程序前端利用微信API与后端交互,确保数据流通。掌握这些实践将优化小程序全栈开发。
|
23天前
|
前端开发 Java API
构建RESTful API:Java中的RESTful服务开发
【4月更文挑战第3天】本文介绍了在Java环境中构建RESTful API的重要性及方法。遵循REST原则,利用HTTP方法处理资源,实现CRUD操作。在Java中,常用框架如Spring MVC简化了RESTful服务开发,包括定义资源、设计表示层、实现CRUD、考虑安全性、文档和测试。通过Spring MVC示例展示了创建RESTful服务的步骤,强调了其在现代Web服务开发中的关键角色,有助于提升互操作性和用户体验。
构建RESTful API:Java中的RESTful服务开发
|
27天前
|
XML JSON 安全
谈谈你对RESTful API设计的理解和实践。
RESTful API是基于HTTP协议的接口设计,通过URI标识资源,利用GET、POST、PUT、DELETE等方法操作资源。设计注重无状态、一致性、分层、错误处理、版本控制、文档、安全和测试,确保易用、可扩展和安全。例如,`/users/{id}`用于用户管理,使用JSON或XML交换数据,提升系统互操作性和可维护性。
18 4
|
29天前
|
安全 API 开发者
构建高效可扩展的RESTful API服务
在数字化转型的浪潮中,构建一个高效、可扩展且易于维护的后端API服务是企业竞争力的关键。本文将深入探讨如何利用现代后端技术栈实现RESTful API服务的优化,包括代码结构设计、性能调优、安全性强化以及微服务架构的应用。我们将通过实践案例分析,揭示后端开发的最佳实践,帮助开发者提升系统的响应速度和处理能力,同时确保服务的高可用性和安全。
29 3
|
1月前
|
缓存 前端开发 API
构建高效可扩展的RESTful API:后端开发的最佳实践
【2月更文挑战第30天】 在现代Web应用和服务端架构中,RESTful API已成为连接前端与后端、实现服务间通信的重要接口。本文将探讨构建一个高效且可扩展的RESTful API的关键步骤和最佳实践,包括设计原则、性能优化、安全性考虑以及错误处理机制。通过这些实践,开发者可以确保API的健壮性、易用性和未来的可维护性。