`

RESTful架构

 
阅读更多

 

名称:REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化",REST的名称中,省略了主语,"表现层"其实指的是"资源"(Resources)的"表现层"。 如果一个架构符合REST原则,就称它为RESTful架构。

 

资源:就是网络上的一个实体,或者说是网络上的一个具体信息。每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以。

 

表现层:"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。

 

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

 

RESTful架构:

(1)每一个URI代表一种资源;

(2)客户端和服务器之间,传递这种资源的某种表现层;

(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

 

错误的URI是:

  POST /accounts/1/transfer/500/to/2

正确的写法是把动词transfer改成名词transaction,资源不能是动词,但是可以是一种服务:

  POST /transaction HTTP/1.1
  Host: 127.0.0.1
  
  from=1&to=2&amount=500.00

另一个设计误区,就是在URI中加入版本号

  http://www.example.com/app/1.0/foo

  http://www.example.com/app/1.1/foo

  http://www.example.com/app/2.0/foo

因为不同的版本,可以理解成同一种资源的不同表现形式,所以应该采用同一个URI。版本号可以在HTTP请求头信息的Accept字段中进行区分(参见Versioning REST Services):

  Accept: vnd.example-com.foo+json; version=1.0

  Accept: vnd.example-com.foo+json; version=1.1

  Accept: vnd.example-com.foo+json; version=2.0

 

 

协议: https

SSL/TLS (1) 所有信息都是加密传播,第三方无法窃-听。

(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。

(3) 配备身份证书,防止身份被冒充。

基本过程是这样的:

(1) 客户端向服务器端索要并验证公钥。

(2) 双方协商生成"对话密钥"。

(3) 双方采用"对话密钥"进行加密通信。

 

 

路径(Endpoint)

  • https://api.example.com/v1/zoos

 

 

参考文档 阮一峰 

http://www.ruanyifeng.com/blog/2011/09/restful.html

http://www.ruanyifeng.com/blog/2014/05/restful_api.html

 

 

 

分享到:
评论

相关推荐

    基于 RESTful 架构的API设计原则和规范.docx

    基于 RESTful 架构的 API 设计原则和规范 RESTful 架构是目前最流行的一种互联网软件架构,它结构清晰、符合标准、易于理解、扩展方便,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。因此...

    RESTful架构实战.docx

    RESTful 架构实战 RESTful 架构是一种世界观,将信息提升为架构中的公共资源。通过 REST,可以实现系统的高性能、可伸缩、通用性、简单性、可修改性和可扩展等特性。本文将解释主要的 HTTP 操作,对 HTTP 响应码...

    RESTful架构风格概述

    ### RESTful架构风格概述 #### 1. RESTful架构风格 RESTful架构风格是由Roy T. Fielding在其2000年的博士学位论文中提出的。Fielding是HTTP/1.1协议设计者之一,他提出的REST架构风格凭借其简洁性和可扩展性受到了...

    RESTful架构.png

    RESTful架构

    spark研究分析&restful架构

    ### Spark研究分析&RESTful架构 #### 一、Spark研究分析 ##### 1.1 Spark简介 Spark 是一种快速、通用的大规模数据处理系统。它最初由美国加州大学伯克利分校(UC Berkeley)的 AMPLab 开发,并于 2010 年正式开源...

    RESTful 架构详解 _ 菜鸟教程2

    综上所述,RESTful架构提供了一种清晰、模块化的方法来设计Web服务,使得开发者能够构建高效、可维护的分布式系统。通过理解并遵循RESTful原则,可以创建出易于理解和使用的API,从而促进系统的互操作性和可扩展性。

    理解RESTful架构、Hessian简介、机制、Webservice及cxf介绍

    总结来说,RESTful架构提供了一种简洁、灵活的互联网软件设计模式,侧重于资源的管理和状态转换。Hessian作为RPC实现,提供了高效、轻量级的远程调用方案。而WebService和CXF则是为了实现跨平台服务交互,其中CXF...

    SpringMVC 使用 RESTful 架构实现 CRUD 操作

    RESTful 架构是一种设计风格,用于构建网络应用,强调资源的表述状态转移。在本教程中,我们将探讨如何使用 SpringMVC 实现基于 RESTful 风格的 CRUD(Create、Read、Update、Delete)操作。 **CRUD 操作概述** ...

    基于servlet的游戏商城(采用RESTful架构风格).zip

    【基于Servlet的游戏商城】是一个利用Java Servlet技术构建的在线游戏交易平台,采用了RESTful架构风格,旨在提供高效、可扩展的电商服务。项目通过Maven进行模块化管理和构建,遵循了传统的三层架构设计原则,包括...

    论文研究-基于Restful架构和Spring框架的Web服务研究 .pdf

    基于Restful架构和Spring框架的Web服务研究,黄佑夫,李建强,伴随着Web技术的飞速发展,Restful架构作为一种分布式系统设计的软件架构风格,将资源和资源的表示两者分割,为构建轻量级、高性能��

    RESTful架构总结

    在这个总结中,我们将深入探讨RESTful架构的核心概念、设计原则以及如何在实际项目中应用。 首先,理解REST(Representational State Transfer,表现层状态转移)的关键在于“资源”和“状态转移”。资源在网络中是...

    Jackblog API Server Koa 版, 个人博客系统, 基于RESTful架构,

    这个API服务器的核心目标是为前端提供数据接口,实现基于RESTful架构的HTTP服务。 **RESTful架构** 是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以资源为中心,通过统一的URI(Uniform Resource ...

    Jackblog API Server Express版, 个人博客系统, 基于RESTful架构

    RESTful架构是资源表示状态转移的缩写,是目前广泛采用的Web服务设计模式。在杰克博客API服务器中,这种架构体现在各个HTTP方法(GET、POST、PUT、DELETE等)对应不同的资源操作上,例如GET用于获取博客文章,POST...

    使用express和mongodb开发一套使用RESTful架构的博客系统增删改查API.zip

    在本项目中,我们将深入探讨如何使用Express框架和MongoDB数据库来开发一个基于RESTful架构的博客系统,实现包括文章的创建、读取、更新和删除(CRUD)在内的核心功能。以下是关于这个主题的详细知识讲解。 首先,...

    restful架构详解

    RESTful架构详解 REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,它设计用于构建基于HTTP协议的Web服务。这种风格强调资源、状态转移和统一接口,使得Web服务更加简洁、高效和可扩展...

    理解RESTful架构

    理解RESTful架构

    RESTful架构介绍

    RESTful架构介绍

    Restful架构的学习

    这是一片简单的关于restful学习内容,本人零基础,通过百度学习后总结的,希望可以对浏览的同学有所帮助。

Global site tag (gtag.js) - Google Analytics