首先明确一点,restful不是一个单词而是几个单词的首字母拼接成的,即REST -- REpresentational State Transfer 翻译过来就是:表现层状态转移。表现层状态转移?你看看你看看,这说的是人话吗?
@Ivony 老师的一句话概括很精辟:
URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。
简略解释
- REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(即REST风格的网络接口);
- Server提供的RESTful API中,URL中只使用名词来指定资源,原则上不使用动词。“资源”是REST架构或者说整个网络处理的核心。比如:
http://api.mj.com/v1/newsfeed: 获取某人的新鲜;
http://api.mj.com/v1/friends: 获取某人的好友列表;
http://api.mj.com/v1/profile]: 获取某人的详细信息; - 用HTTP协议里的动词来实现资源的添加,修改,删除等操作。即通过HTTP动词来实现资源的状态扭转:
GET 用来获取资源,
POST 用来新建资源(也可以用于更新资源),
PUT 用来更新资源,
DELETE 用来删除资源。比如:
DELETE http://api.mj.com/v1/friends: 删除某人的好友 (在http parameter指定好友id)
POST http://api.mj.com/v1/friends: 添加好友
UPDATE http://api.mj.com/v1/profile: 更新个人资料
禁止使用: GET http://api.mj.com/v1/deleteFriend 图例:
restful-api-best-practices.jpg- Server和Client之间传递某资源的一个表现形式,比如用JSON,XML传输文本,或者用JPG,WebP传输图片等。当然还可以压缩HTTP传输时的数据(on-wire data compression)。
- 用 HTTP Status Code传递Server的状态信息。比如最常用的 200 表示成功,500 表示Server服务器内部错误等。
为什么使用RESTful API?
大家都知道"古代"网页是前端后端融在一起的,比如之前的PHP,JSP等。在之前的桌面时代问题不大,但是近年来移动互联网的发展,各种类型的Client层出不穷,Web端不再用之前典型的PHP或JSP架构,而是改为前段渲染和附带处理简单的业务逻辑。RESTful可以通过一套统一的接口为 Web,iOS和Android平等提供服务。另外对于广大平台来说,比如微博开放平台,微信公共平台等,它们不需要有显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。所以如何正确地理解 RESTful 架构和设计好RESTful API就显得尤为重要。
网友评论