目前主流的三种web服务交互方案:
REST (Representational State Transfer) 表征性状态转移
SOAP (Simple Object Access Protocol)简单的对象访问协议
XML-RPC (XML Remote Procedure Call)基于XML的远程过程调用
但最为流行最为常用就是restful,而当一个架构符合REST的约束条件和原则,我们就称它为restful架构。
为了避免明文传输,更好的维护数据传输时的安全性,restful规范推荐使用https替代http。
1.restful规范就是在想要完成程序间数据交互的代码时所需要的遵循的规范,它视网上的一切数据为资源,所有的操作都是在对资源进行增删改查,所以这是一种面向资源式的编程。
2..如果说数据库就是资源库,那么URL就是用于检索的目录和直达资源的高速路。为了避免歧路亡羊的事情发生,所以在编写URL的时候必须遵循固定的规范,表达出的信息也要清晰明确,不至于产生歧义。
在URL中要明确体现一下几点:
1.api标识:http://www.xxxx.com/api/...
2.版本信息:http://www.xxxx.com/api/v1...
3.用名词而不是动词来表示所访问资源的种类,所用名词往往与数据库表格的名称相同
3.如果要通过在url中添加一些筛选条件,实现对资源的精准定位和对状态的精确控制,一般是以?+关键字= int整型 (需要在前段做好正则匹配)
http://www.luffycity.com/api/user/?page=1&type=9 #
4.restful规范下的URL代码比FBV下的URL要更加精简,只需要一个URL就能完成所有操作,因为他是根据不同的请求方法来判断对数据进行何种操作,而不需要分别为增删改查各设置一个URL。
5. 返回值:要以json的形式返回值,delete的返回值为空
GET http://www.luffycity.com/api/user/
[
{'id':1,'name':'alex','age':19},
{'id':1,'name':'alex','age':19},
]
POST http://www.luffycity.com/api/user/
{'id':1,'name':'alex','age':19}
GET http://www.luffycity.com/api/user/2/
{'id':2,'name':'alex','age':19}
PUT http://www.luffycity.com/api/user/2/
{'id':2,'name':'alex','age':19}
PATCH https//www.luffycity.com/api/user/2/
{'id':2,'name':'alex','age':19}
DELETE https//www.luffycity.com/api/user/2/
空
6.给用户返回状态码:
- 200,成功
- 300,301永久 /302临时
- 400,403拒绝 /404找不到
- 500,服务端代码错误
-
操作异常时,要返回错误信息
{ error: "Invalid API key"}
-
要为可能跳转的下一个网页要提供接口:Hypermedia AP
{
'id':2,
'name':'alex',
'age':19,
'depart': "http://www.xxx.com/api/user/30/"
}