惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
博客园_首页
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
酷 壳 – CoolShell
酷 壳 – CoolShell
Y
Y Combinator Blog
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
G
Google Developers Blog
Last Week in AI
Last Week in AI

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟
理解RESTful架构
2014-08-28 · via 夜行人

关于这个话题,读过最好的中文资料是阮一峰老师博客上的这篇文章

以下做些摘录,方便自己查看,想理解RESTful架构架构,建议翻阅上头的文章。


#解决什么问题

  • 网站即软件
  • 这种"互联网软件"具有高延时(high latency)、高并发等特点。
  • RESTful架构,就是目前最流行的一种互联网软件架构

#顾名思义

  • REST,即Representational State Transfer的缩写。阮一峰老师对这个词组的翻译是表现层状态转化。如果一个架构符合REST原则,就称它为RESTful架构。
  • 要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组到底是什么意思,它的每一个词代表了什么涵义。

#逐词分析 ##资源(Resources)

  • REST的名称"表现层状态转化"中,省略了主语。“表现层"其实指的是"资源”(Resources)的"表现层"。
  • 所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。
  • “资源"是具体的实在。你可以用一个URI(统一资源定位符)指向它
  • 注:uri是定位关键,在后端视角来看(django-restful-framework),框架要把资源(数据)映射到uri(url)上
  • 注2:资源可能是分布式的,使用超链接来连接它们

##表现层(Representation)

  • “资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层”(Representation)。
  • 而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。

##状态转化(State Transfer)

  • 访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。
  • 互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
  • HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

#综述

  • 每一个URI代表一种资源;
  • 客户端和服务器之间,传递这种资源的某种表现层;
  • 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

#误区

  • 最常见的一种设计错误,就是URI包含动词. “资源"表示一种实体,所以应该是名词,URI不应该有动词,动词应该放在HTTP协议中。

文章作者 种瓜

上次更新 2014-08-28