REST首先不是个英文单词,是REpresentational State Transfer的简写。直译过来是表现层状态转移。- -||,从名字讲,只是一个困惑。
全称是Resource Representational State Transfer:
Resource:资源,即数据(网络的核心)
Representational:某种表现形式,比如JSON,XML,JPEG等;
State Transfer:状态变化。通过HTTP动词实现。
有一个概括很精辟:
URL定位资源,用HTTP动词(GET,POST,DELETE,DETC),描述操作。
Web端不再用之前典型的PHP或JSP架构,而是改为前端渲染和附带处理简单逻辑(AngularJs)。Web端和Server只使用上述定义的API来传递数据和改变数据状态。格式一般是json。Web,Android都变为同等角色通过一套API来消费Server提供的服务。
为什么要使用RESTful结构呢?
从前的网页基本都是前后端揉在一起,比如PHP和JSP等。但随着移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为Web,IOS等提供服务。
如何设计Server的API才满足RESTful要求?
2.API versioning 可以放在URL里面,也可以用HTTP的header:/api/v1/
3.URL使用名词而不是动词,且推荐用复数。
GET/products:will return the list of all products
好过 /getProducts
4.保证HEAD和GET方法是安全的,不会污染资源状态
杜绝GET/deleteProduct?id=1这种情况
5.资源的地址推荐用嵌套结构
比如:GET /friends/10375923/profile
6.警惕返回结果的大小,如果过大,及时分页(pagination)或者加入限制(limit)。HTTP协议支持分页操作。
7.使用正确的Http status Code表示访问状态
8.在返回结果用明确易懂的文本,而且适当的加入注释。
9.关于安全:自己的接口就用https,加上一个key做一次hash放在最后即可。
网友评论