RAML 学习笔记
RAML,Swagger和API Blueprint区别
Swagger 优势在于对从现有的程序中自动生成接口,无需完全手写文档;
RAML 的优势是文档编写清晰方便,适合于没有现成接口,而需要全新规划;
Blueprint 的优点是 markdown 语法。因为目前手头的接口也是从 0 开始,也需要系统性的规划一下,因此选择 RAML 兼顾编写和规划
编辑器选择
学习记录
1. RAML文档头部声明
#%RAML 1.0
title: ZANE api
baseUri: http://api.zanezz.cn/{version}
version: v1
注意:raml的缩进是两空格
2. 资源定位
例如会员接口中包含了获取会员信息与新增一个会员两个接口方法,那么可以这样写资源定位:
/member:description: the interface is operations about vip./getmember:description: 获取会员信息,如果没有传入具体参数,则获取会员列表/addmember:description: 新增一个会员
注意每个冒号后面有一个空格,如果冒号后是 “|” 符号,则表示后面的内容是多行
3. 调用方法
那么接下来需要定义接口的调用方法,RESTful 标准中调用方法常用有 GET,POST,PUT,PATCH,DELETE。而这里我们常用的只有两种 GET 和 POST。其中 GET 主要用于读取操作,而 POST 主要用于写入操作。
/member:description: the interface is operations about vip./getmember:description: 获取会员信息,如果没有传入具体参数,则获取会员列表get:description: 获取会员信息,get方式/addmember:description: 新增一个会员post:description: 新增一个会员,post
4. 请求参数
有了调用方法还需要附上请求参数,如获取会员的参数是 mobile,而新增会员有 name 和 mobile 两个参数:
/member:description: the interface is operations about vip./getmember:description: 获取会员信息,如果没有传入具体参数,则获取会员列表get:description: 获取会员信息,get方式queryParameters: mobile:/addmember:description: 新增一个会员post:description: 新增一个会员,postqueryParameters: name:mobile:
接着对每个参数定义约束条件等,其中 type 表示参数类型,description 表示参数说明,required 表示是否必填:
/member:description: the interface is operations about vip./getmember:description: 获取会员信息,如果没有传入具体参数,则获取会员列表get:description: 获取会员信息,get方式queryParameters: mobile:type: stringdescription: 会员电话required: true/addmember:description: 新增一个会员post:description: 新增一个会员,postqueryParameters: name:type: stringdescription: 会员姓名required: truemobile:type: stringdescription: 会员手机required: true
5.返回结果
接下来还需要描述一下返回结果,结果中最好给出返回的示例,方便理解接口返回值,这里 reponses 表示返回结果定义,首先定义返回结果 200,定义 body,返回的格式 json,返回的示例 example:
#%RAML 1.0
title: ZANE api
baseUri: http://api.zanezz.cn/{version}
version: v1/member:description: the interface is operations about vip./getmember:description: 获取会员信息,如果没有传入具体参数,则获取会员列表get:description: 获取会员信息,get方式queryParameters: mobile:type: stringdescription: 会员电话required: trueresponses: 200:body: application/json:example: |{"error":0,"msg":"查询成功","data":[{"name":"王明","mobile":"12388888888"},{"name":"zane","mobile":"15555255553"}]/addmember:description: 新增一个会员post:description: 新增一个会员,postqueryParameters: name:type: stringdescription: 会员姓名required: truemobile:type: stringdescription: 会员手机required: true