RESTful Web服务架构标准

脑图


RESTful Web服务架构标准_第1张图片
RESTful

目录


  1. 什么是RESTful

  2. HTTP方法

  3. 清晰的RESTful API

  4. RESTful 消息

  5. RESTful URI

  6. RESTful 会话

什么是RESTful


  • REST是一种基于web标准软件架构标准
  • 在这个标准中,把一切调用或请求的对象,都视为资源,所以,其中心思想,一切皆资源
  • 客户端与服务端之间以HTTP处理数据通信
  • REST架构中,服务端提供对资源的访问,而客户端,访问并呈现资源
  • 所以,REST架构中,主要参与者,就是客户端与服务端
  • 服务端,负责着一切对资源的操作,这些操作会被封装成一个RESTful API,用于客户端请求
  • URIs是REST架构中的全局ID标识

HTTP 方法


  • GET 提供资源的只读访问
  • PUT 创建一个新资源
  • DELETE 用于移除一个资源
  • POST 更新现有资源或者创建新资源
  • OPTIONS 用于获取该资源所支持的操作

清晰的RESTful API


RESTful Web服务架构标准_第2张图片
RESTful API

如图,操作类型中,只读指不会更改资源,幂等指多次执行产生的影响与与第一次执行产生的影响是一样的,N/A在表格中,可理解为 / 即划掉此格,不用理会此格

这里顺便解释一个概念:幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。

REST服务器对资源的表现形式应该是包容的,即使用什么格式传递数据,应该由客户端来指定:有客户端要xml而有的客户端要json

RESTful消息


在REST服务中,HTTP请求与响应就是作为消息传递的技术
一个REST消息包含消息数据和元数据(为描述数据的数据)

  • 请求
RESTful Web服务架构标准_第3张图片
HTTP Request
Verb(动作) 表明HTTP方法,如GET、POST等
URI 表示服务器上资源的统一资源标识符
HTTP VERSION (http版本) 如 http v1.1
请求头,包含HTTP请求消息的元数据,它是键值对(key-value),比如客户端类型
请求体,消息内容和要求的REST服务器返回资源的表示形式
  • 响应
RESTful Web服务架构标准_第4张图片
HTTP Response
Response Code(状态/响应码),表明请求资源的服务器状态,比如404 500等
HTTP VERSION http版本
响应头 返回响应的元数据 如服务器类型等,也是键值对
响应体 以客户端想要的资源表现形式返回资源

RESTful API


RESTful web 服务的URI(统一资源标识符)定义规则

  • 见名知意
  • 避免使用空格与特殊字符,一般以下划线(_)或者字符(-)代替
  • 使用小写字母,URI本身是不区分大小写的
  • 保持向后兼容,Web服务是一种公共服务,URI一旦公开之后,应该始终可用,尽管需要更新URI,那也需要使用HTTP 300 重定向老的URI到新的URI
  • 使用HTTP Verb

Verb规则

  • GET是只读且安全的
  • PUT和DELETE是幂等的
  • PUT和POST操作几乎相同,区别在于PUT幂等,而POST不幂等

RESTful 会话


RESTful基于HTTP,是无状态的,想要保持会话,则客户端传递会话标识符,服务端保存会话标识符。就像Session和Cookie。

无状态的优势:

  • Web服务可以独立对待每个请求方法
  • Web服务不需要维护客户端先前的交互
  • HTTP本身就是一个无状态协议,所以RESTful Web服务可与HTTP协议无缝协作

RESTful 客户端缓存


当获取一个资源的时候,客户端应根据服务器返回的响应头中所指定的方式,以决定是否缓存资源,或者以何种方式缓存资源。

一个响应头可能包含的内容:

  • Date 创建资源的日期和时间
  • Last Modified 最后修改资源的日期和时间
  • Cache-Control 控制缓存的主要头信息
  • Expires 缓存到期的日期和时间
  • Age 从服务器获取资源持续的秒数

Cache-Control的取值:

  • Public 表示该资源可由任何组件缓存
  • Private 表示该资源只能由客户端和服务器缓存,没有中介可以缓存
  • No-cache/no-store 表示该资源不可缓存
  • Max-age 表示该资源在max-age指定的秒数内有效,之后客户端必须发起另一个请求
  • Must-revalidate 表明如果max-age已经过去了,服务器要重新验证资源

RESTful web服务安全性


  1. 验证来自客户端的所有输入,这可以避免注入攻击。
  2. 使用会话机制,对客户端此次请求进行权限认证。
  3. URL应避免敏感数据。
  4. 合理使用HTTP Verb,比如GET方法,不应该能够删除数据。
  5. 验证XML/JSON数据是否合法正常
  6. 合理正确的使用HTTP错误消息,比如403、500等

HTTP常见状态码:

RESTful Web服务架构标准_第5张图片
状态码

结语


RESTful是一个web服务的架构标准,后端开发人员可以按照这个标准来实现API,而终端开发人员,同样可以用这个标准来使用API。
标准的存在,就是为了统一双方的约定,就好比一个接口,不论你用json返回数据还是xml返回数据,它都没有必然的对错,只要开发组的成员约定好,同时返回两种格式也行(RESTful的思想,也是这样)
一个广泛使用的标准,可以减少开发者之间的交流成本,也可以让一些新入职的员工能够更快适应项目。

本文出自半醒的狐狸博客

你可能感兴趣的:(RESTful Web服务架构标准)