RESTful 架构与 RESTful 服务
风格 ⇒ 标准 ⇒ 协议 ⇒ 实现
Representational State Transfer,是一种软件架构风格,既然是风格,就非标准或协议,而是定义了一组设计原则和约束条件。具有如下特点:
- 适用于客户端和服务器交互类的软件;
- 基于该风格设计的软件更简洁,更有层次,更易于实现缓存等机制;
- 在REST中,每一个对象都是通过 URL 来表示的
1. 网站即软件
网站即软件,是一种新型的软件。
- 作为软件的网站是一种互联网软件,采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,
- 具有高延时(high latency,受制于带宽)、高并发的特点;
- 软件开发一般针对单机环境,网络则主要研究系统之间的通信;
RESTful 架构的提出,使得网站越来越多地具有软件的属性,通过风格的限制和约束,也使得网站开发能够按照软件开发的方式进行开发。
2. RESTful 架构
REST,representational state transfer,表现层状态转化(还记得 OSI 7层网络模型吗,在网络层、传输层之上又细分为会话层(session layer),表示层(presentation layer))。
- 资源(resources)与资源的展现,表示层状态转移,省略了主语,表现层其实指的是资源的表示层,对资源的展示与表现;
- 资源(resources)就是 URI/URL 的 R;
- 所谓“资源”,就是网络空间中的一个实体,由 URI 唯一指向。它可以是一段文本,一张图片,一首歌曲,甚至是一种服务。
- 一个专门的网站将资源具体呈现出来的形式,叫做它的“表现层”;文本可以用 txt 格式表现,也可用 html 格式、xml 格式、json 格式。URI 仅代表资源,并不指定资源形式。严格说来,某些网页网址(URL)最后的“.html”后缀名是不必要的,后缀名表格式,属“表示层”范畴,而 URL 仅说明资源的位置。那么具体的资源表示(resource representation)应该放在何处呢?通过 HTTP 请求的头信息中用 accept 和 content-type 字段(比如为 text/html)指定,这两个字段是对“表现层”的描述;
- 状态转移(state transfer):访问一个网站,就代表了客户端和服务器的一个交互过程,客户端发出连接或者获取资源的请求,服务器给出响应。自然这个过程中,必然涉及到数据和状态的转化;
- http 的第二个 t 就表示 transfer,转移;
- 互联网通信协议HTTP协议,是一个无状态(stateless)协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生”状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是”表现层状态转化”。
- 客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
references
RESTful 架构与 RESTful 服务的更多相关文章
- 论单页Web应用和RESTful架构
单页Web应用 概述 单页Web应用并不是突然诞生的一门新技术,而是web展示的一种新的尝试.它将所有的动作局限于一个Web页面,在加载站点首页的时候就加载站点需要的JavaScript和CSS.单页 ...
- Web应用和RESTful架构
Web应用和RESTful架构 单页Web应用 概述 单页Web应用并不是突然诞生的一门新技术,而是web展示的一种新的尝试.它将所有的动作局限于一个Web页面,在加载站点首页的时候就加载站点需要的J ...
- 【转载】RESTful 架构风格概述
本文转载自https://blog.igevin.info/posts/restful-architecture-in-general/ 在移动互联网的大潮下,随着docker等技术的兴起,『微服务』 ...
- RESTful架构及SOA架构简单解析
1.RESTful架构 本人也是刚接触ASP.NET开发,以下为自己简单的理解,并做了一些记录,表述不当或者错误之处还请指正,在此谢过. 首先,REST(REpresentational State ...
- RESTful 架构风格
在移动互联网的大潮下,『微服务』的概念也越来越被大家接受并应用于实践,日益增多的web service逐渐统一于RESTful 架构风格,如果开发者对RESTful 架构风格不甚了解,则开发出的所谓R ...
- 一文读懂RESTful架构
转载自https://zhuanlan.zhihu.com/p/381554129 RESTful架构究竟是什么 别着急,想要了解RESTful,我们先来了解一位大佬Roy Thomas Fieldi ...
- restful 架构风格的curd(增删改查)
restful架构 概念:REST指的是一组架构约束条件和原则,如果一个架构符合REST的约束条件和原则,就称之为RESTful架构. restful不是一个专门的技术,他是一个规范.规范就是写写代码 ...
- SpringBoot系列十一:SpringBoot整合Restful架构(使用 RestTemplate 模版实现 Rest 服务调用、Swagger 集成、动态修改日志级别)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot整合Restful架构 2.背景 Spring 与 Restful 整合才是微架构的核心,虽然在整 ...
- [转]移动互联网应用技术架构简介-Restful服务
Restful是基于网络的软件系统架构风格.其优先考虑分布性和扩展性,而不是安全.错误处理.对象映射. 所以Restful架构特别适用的场合为用户快速增长的互联网和移动互联网领域,看起来很容易理解,以 ...
随机推荐
- bootstrap theme & template
https://wrapbootstrap.com/ Unify http://wrapbootstrap.com/preview/WB0412697 https://htmlstream.com/p ...
- JS那些事儿——Gulp的入门使用
前言 新人使用gulp的一个记录. 首先对于第一个新事物,我会问gulp这是什么? 答:gulp是一个自动化构建工具,它可以做一些自动化的任务,比如: 检查Javascript 编译Sass(或Les ...
- 【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中
执行了save()方法 sql语句也执行了,但是数据并未插入数据库中 解决方法: 是因为执行了save()方法,也执行了sql语句,但是因为使用的是 @Transactional 注解,不是手动去提 ...
- 求菲波那契数列的第n个数
1,2,3,5,8,13..... 求第n个数 def get_num(n): if n == 1: return 1 if n == 2: return 2 return get_num(n - 1 ...
- Android Studio 2.0 Beta 5公布,修复几个与即时执行相关的严重BUG.
Android Studio 2.0 Beta 5公布,修复几个与即时执行相关的严重BUG. This build fixes a couple of important bugs related t ...
- [转]java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- UP board 漫谈——从Atom到UP Board
前言 原创文章,转载引用务必注明链接.如有疏漏,欢迎指正. 图文部分引用自CNXSoft 每块开发板都有其设计理念,也是其特色所在.有做工优良.接口丰富的多媒体全能开发板Lemaker Guita ...
- react 使用 moment 进行 日期格式化
在react中使用得先导入: import moment from 'moment'; 调用: npm install moment var moment = require('moment'); m ...
- 《大话操作系统——做坚实的project实践派》(7)
写操作系统内核须要了解一个详细计算平台的CPU,包含这个CPU里的寄存器和异常中断处理机制
- Distributed Management Task Force----分布式管理任务组
http://baike.baidu.com/link?url=Y9HGLs8Qj6pXbbgY6xPdfiGDsQO8Eu1e80B4giQtQ_hAfGNF59byxnLoERYri4Duw7Gw ...