API 是一个系统向外暴露或公开的一套接口,通过这些接口,外部应用程序能够访问该系统
REST 是一种基于资源的架构风格,任何能够命名的对象都是一个资源,如 user,一个资源具有一个统一的资源标识符(URI),如 user/1234,通过 URI 能够标识并访问该资源
REST 定义了6个架构约束:
统一接口约束本身又由4个子约束组成:
基于 TCP/IP 协议的应用层协议
浏览网页的过程,就是通过 HTTP 协议来传递浏览器与服务器之间的请求与响应的
HTTP 协议采用请求/响应模型
HTTP 协议采用明文传输数据,这种方式并不安全,所以后来设计了 HTTPS 协议
统一资源定位符(URL)代表网络上一个特定的资源
对于一个 URL,如 http://www.xxx.com/images/logo.png
它由以下几个部分组成:
当 HTTP 服务器对请求返回响应时,它不仅仅返回资源本身,也会在响应中指明资源的内容类型(Content Type),也称为媒体类型
要指定内容类型,HTTP 依赖于 MIME 标准,表示文档的性质和格式
常用的 MIME 类型如下:
HTTP 请求消息和响应消息具有相似的结构:
请求起始行包括:
响应起始行包括:
常见的 HTTP 请求方法有:GET、POST、PUT、DELETE、PATCH(部分更新)、HEAD、OPTIONS
HTTP 状态码由3个数字组成,用于指明 HTTP 请求的结果
根据其表述意义,状态码可以分为以下5类:
首先,在实现 RESTful 系统时,应正确地使用 HTTP 方法、HTTP 消息头和 HTTP 状态码
除了原则以外,在设计资源的 URI 时也应该注意以下原则:
在 RESTful API 中,JSON 和 XML 是最常用到的两种资源表述格式
JSON 是一种轻量级的数据交换格式,数据使用名称/值来表示,中间用冒号隔开
JSON 数据项的值的类型可以是下列类型:
XML 与 HTML 语言很相似,包含标签、属性等元素,而且有非常严格的层次结构,一个标签必须同时具有起始标签与结束标签,允许自定义标签
XML 文档必须包含根元素,该元素是文档中其他元素的父元素,文档中的所有元素形成一棵文档树
XML 每个标签之间还必须要正确的嵌套,另外,标签名区分大小写,标签允许包含一个或多个属性,每个属性的值必须使用引号
JSON 比 XML 更简洁,容易解析,但是不支持注释,扩展性不如 XML
RESTful API 添加版本有以下4中方式: