一. 定义
Rest
的全称是Representational State Transfer
,2000年由Roy Fielding
发表在他的博士论文中,首次提出了Restful
的概念。Restful
做为一种接口的设计规则,基于HTTP协议
,可以使用XML格式
或JSON格式
传输数据。对于使用restful
这套规则定义开发的接口,我们称之为Restful API
。
关于Restful
的具体表现形式,简单可以用一句话概括:URL
定位资源,使用HTTP请求
(GET、POST、PUT、DELETE
等)对资源进行操作。
二. 设计原则与规范
Restfu
是典型的基于HTTP
的协议 ,它有哪些设计 原则和规范呢?
URL
与资源:资源表示网络上的一个实体对象,可以是一个资产、一首歌曲或一种服务,资源总是以一定的格式来表现自己。通过定义一个URL
指向资源,要访问资源时,只需要通过该资源所属的URL
进行请求访问即可。一般来说,接口名称只能用名词,不可以用动词,根据HTTP
的请求来进行操作,这样可以不在URL
不暴露操作方式。
例如:http://www.kk.com/api/books
表示一个资源(书本)对象- 统一接口规范:
Restful
架构应该遵循统一接口原则 ,统一接口包含了一组固定的预定义操作,不管是什么样的资源,都通过方式进行资源访问 。在Restful API
架构中,客户端通过HTTP协议
,使用GET
、POST
、PUT
和DELETE
4种请求方式对服务端资源进行操作,GET
用于获取资源,POST
用来新建资源,PUT
用来更新资源,DELETE
用于删除资源。 - 无状态:从客户端到服务端的每个请求都是独立 ,请求中必须包含需要的所有信息,这也代表服务器不需要储存任何上下文信息,对于客户端来说,第一次请求和第100次请求都是相同的。在Restful 架构中,尽量避免使用
session
的方式,而是由客户端自己标识会话状态(token
)。 - 除以上的操作规范外,另外还有一些要求, 包括:
url不能使用大写字母;
不使用文件扩展名,如.php
等;
可在url中增加api版本号等;
文本返回必须为Json
格式。
三. URL格式标准、HTTP动词、参数命名规范
3.1 下面我们通过几个示例来了解下Restful API
的格式定义方式
- 查看
GET http://api.xxx.com/users
查看所有用户信息
GET http://api.xxx.com/users/id
查看该id的用户信息
GET http://api.xxx.com/users?age=