RESTful API设计
1.总使用HTTPS协议
2.域名
子域名:api.wython.com (存在跨域问题) url: www.wython.com/api/
3.版本
www.wython.com/api/v1 www.wython.com/api/v2
4.路径,视网络上的任何东西为资源,均使用名词表示(也可是复数)
www.wython.com/api/v1/order www.wython.com/api/v1/animals
5.请求方式methon不同
GET:从服务器取资源 POST: 在服务器新建资源 PUT: 更新资源(全部更新,例用户表更新用户名,密码,有邮箱) PATCH: 更新资源(局部更新,只更新用户名或密码) DELETE: 删除资源
6.过滤,通过url上传参的形式传递搜索条件
www.wython.com/api/v1/order?page=1 指定返回第几页以及每页的记录
7.状态码
2xx 操作成功
3xx 重定向
301 永久重定向
302 临时重定向
4xx 客户端访问错误
400 请求资源不存在,输错地址之类的
401 用户没有得到访问权限
403 Forbidden 表示用户得到授权但访问被禁止
5xx 服务端错误8.错误处理,返回错误信息error方做key
9.返回结果,针对不同操作,服务器向用户返回的结果应符合一下规范
GET/collction: 返回资源对象的列表 GET/collction/resource: 返回单个资源对象 POST/collction: 返回新生成的资源对象 PUT/collction/resource: 返回完整的资源对象 PATCH/collction/resource: 返回完整的资源对象 DELETE/collction/resource:返回一个空文档
10.Hypermedia API,返回结果中提供链接,连向其他API方法,使得用户不查看文档也知道下一步应该做什么
摘自:http://www.ruanyifeng.com/blog/2014/05/restful_api.html
比如,当用户向api.example.com的根目录发出请求,会得到这样一个文档。
{"link": {
"rel": "collection https://www.example.com/zoos",
"href": "https://api.example.com/zoos",
"title": "List of zoos",
"type": "application/vnd.yourformat+json"
}}
上面代码表示,文档中有一个link属性,用户读取这个属性就知道下一步该调用什么API了。rel表示这个API与当前网址的关系(collection关系,并给出该collection的网址),href表示API的路径,title表示API的标题,type表示返回类型。
Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
{
"current_user_url": "https://api.github.com/user",
"authorizations_url": "https://api.github.com/authorizations",
// ...
}
从上面可以看到,如果想获取当前用户的信息,应该去访问api.github.com/user,然后就得到了下面结果。
{
"message": "Requires authentication",
"documentation_url": "https://developer.github.com/v3"
}
上面代码表示,服务器给出了提示信息,以及文档的网址。 
京公网安备 11010502036488号