API与用户的通讯协议,老是使用HTTPs协议,确保交互数据的传输安全。数据库
应该尽可能将API部署在专用域名之下。后端
https://api.example.com
若是肯定API很简单,不会有进一步扩展,能够考虑放在主域名下。api
https://example.org/api/
应该将API的版本号放入URL。数组
https://api.example.com/v{n}/
另外一种作法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。Github采用这种作法。安全
采用多版本并存,增量发布的方式服务器
v{n} n表明版本号,分为整形和浮点型restful
整形的版本号: 大功能版本发布形式;具备当前版本状态下的全部API接口 ,例如:v1,v2cookie
浮点型:为小版本号,只具有补充api的功能,其余api都默认调用对应大版本号的api 例如:v1.1 v2.2架构
路径又称"终点"(endpoint),表示API的具体网址。前后端分离
在RESTful架构中,每一个网址表明一种资源(resource),因此网址中不能有动词,只能有名词,并且所用的名词每每与数据库的表格名对应。通常来讲,数据库中的表都是同种记录的"集合"(collection),因此API中的名词也应该使用复数。
举例来讲,有一个API提供动物园(zoo)的信息,还包括各类动物和雇员的信息,则它的路径应该设计成下面这样。
https://api.example.com/v1/products https://api.example.com/v1/users https://api.example.com/v1/employees
对于资源的具体操做类型,由HTTP动词表示。
经常使用的HTTP动词有下面四个(括号里是对应的SQL命令)。
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
DELETE(DELETE):从服务器删除资源。
下面是一些例子。
GET /product:列出全部商品
POST /product:新建一个商品
GET /product/ID:获取某个指定商品的信息
PUT /product/ID:更新某个指定商品的信息
DELETE /product/ID:删除某个商品
GET /product/ID/purchase :列出某个指定商品的全部投资者
get /product/ID/purchase/ID:获取某个指定商品的指定投资者信息
若是记录数量不少,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。
下面是一些常见的参数。
?limit=10:指定返回记录的数量
?offset=10:指定返回记录的开始位置。
?page=2&per_page=100:指定第几页,以及每页的记录数。
?sortby=name&order=asc:指定返回结果按照哪一个属性排序,以及排序顺序。
?producy_type=1:指定筛选条件
传入参数分为4种类型:
地址栏参数
* restful 地址栏参数 /api/v1/product/122 122为产品编号,获取产品为122的信息
* get方式的查询字串 见过滤信息小节
请求body数据
cookie
request header
cookie和header 通常都是用于OAuth认证的2种途径
只要api接口成功接到请求,就不能返回200之外的HTTP状态。
为了保障先后端的数据交互的顺畅,建议规范数据的返回,并采用固定的数据格式封装。
接口返回模板:
{ status:0, data:{}||[], msg:’’ }
status: 接口的执行的状态
=0表示成功
<0 表示有异常=""
Data 接口的主数据
能够根据实际返回数组或JSON对象
Msg 信息
当status!=0 都应该有错误信息
因为实际业务开展过程当中,可能会出现各类的api不是简单的restful 规范能实现的,所以,须要有一些api突破restful规范原则。特别是移动互联网的api设计,更须要有一些特定的api来优化数据请求的交互。
把当前页面中须要用到的全部数据经过一个接口一次性返回所有数据
举例
api/v1/get-home-data 返回首页用到的全部数据
这类API有一个很是很差的地址,只要业务需求变更,这个api就须要跟着变动。
把当前用户须要在第一时间内容加载的多个接口合并成一个请求发送到服务端,服务端根据请求内容,一次性把全部数据合并返回,相比于页面级api,具有更高的灵活性,同时又能很容易的实现页面级的api功能。
规范
地址:api/v1/batApi
传入参数:
data:[ {url:'api1',type:'get',data:{...}}, {url:'api2',type:'get',data:{...}}, {url:'api3',type:'get',data:{...}}, {url:'api4',type:'get',data:{...}} ]
返回数据
{
status:0,
msg:'', data:[ {status:0,msg:'',data:[]}, {status:-1,msg:'',data:{}}, {status:1,msg:'',data:{}}, {status:0,msg:'',data:[]}, ] }
RAP是一个GUI的WEB接口管理工具。在RAP中,您可定义接口的URL、请求&响应细节格式等等。经过分析这些数据,RAP提供MOCK服务、测试服务等自动化工具。RAP同时提供大量企业级功能,帮助企业和团队高效的工做。
在先后端分离的开发模式下,咱们一般须要定义一份接口文档来规范接口的具体信息。如一个请求的地址、有几个参数、参数名称及类型含义等等。RAP 首先方便团队录入、查看和管理这些接口文档,并经过分析结构化的文档数据,重复利用并生成自测数据、提供自测控制台等等... 大幅度提高开发效率。
强大的GUI工具 给力的用户体验,你将会爱上使用RAP来管理您的API文档。
完善的MOCK服务 文档定义好的瞬间,全部接口已经准备就绪。有了MockJS,不管您的业务模型有多复杂,它都能很好的知足。
庞大的用户群 RAP在阿里巴巴有200多个大型项目在使用,也有许多著名的公司、开源人士在使用。RAP跟随这些业务的成行而成长,专一细节,把握质量,经得住考验。
免费 + 专业的技术支持 RAP是免费的,并且你的技术咨询都将在24小时内获得答复。大多数状况,在1小时内会获得答复。
RAP是一个可视化接口管理工具 经过分析接口结构,动态生成模拟数据,校验真实接口正确性, 围绕接口定义,经过一系列自动化工具提高咱们的协做效率。咱们的口号:提升效率,回家吃晚饭!