转自:
[http://api200.com/tutorial/tutorial.html#setup-for-the-tutorial]
简介
本教程是RestBird的快速使用教程,更详细的功能介绍请参考文档。
教程分为如下几个部分:
- 安装 介绍docker和RestBird的安装
- Rest Api 测试 介绍API的测试,如如何创建请求,验证回复
- API录制与回放 介绍如何录制和回访API
- 模拟服务器 介绍如何创建和启动模拟服务器
- 任务或程序 介绍如何进行任务编程来完成更高级的功能
- 版本控制 介绍如何用版本控制工具来管理工程文件
不必须阅读每一个章节,选择你感兴趣的去阅读
安装手册
安装包括Docker安装和RestBird的安装两部分:
安装 Docker
Docker 作为当下最流行的应用发布方式,已经被Linux,Windows,MacOS广泛支持。
请参考Docker官方文档来进行 Docker安装
下载安装RestBird的Docker镜像
当Docker安装好,就可以使用Docker命令,从 Docker集市下载安装RestBird的Dcoker镜像:
# 从Dcoker集市下载安装RestBird
$ sudo docker pull restbird/rest
对于中国用户,请在执行上述docker pull命令之前务必添加一个docker加速镜像仓库来提高docker image 下载速度:
sudo echo "DOCKER_OPTS=\"--registry-mirror=http://hub-mirror.c.163.com\"" >> /etc/default/docker
创建工程并运行RestBird
在完成上述两步后,就可以运行RestBird的容器了:
首先, 在任意你喜欢的地方创建一个目录,用于存放工程文件:
工程文件目录可以在任何位置, 以’/var/my-first-project’为例:
$mkdir /var/my-first-project
$ls /var/my-first-project
其次, 运行RestBird的Docker容器,并将刚才创建的工程目录映射给这个容器:
# 方式1:将容器运行在当前host的同一个网络上(这是推荐的最简单运行方式, 只有linux支持):
sudo docker run -ti --user $(id -u):$(id -g) --net host -v /var/my-first-project:/data/restbird restbird/rest
# 方式2:将容器运行在一个隔离的网络里边,这里需要将本地网络的一个端口映射到容器的8080端口,以便于访问容器
sudo docker run -ti --user $(id -u):$(id -g) -p 8080:8080 -v /var/my-first-project:/data/restbird restbird/rest
无论是方式1或这方式2启动容器后,现在就可以通过浏览器来访问RestBird的Web界面了: http://localhost:8080/ .
提示
将容器直接运行在Host同一个网络里 (方式1), 拥有很多的使用便利。因为是运行在同一个网络,所有,不需要做端口映射,这在做服务器模拟和API录制的时候非常便利,当然作为Docker的高级使用者,你可以随时使用那种方式都没有问题。
RestBird 页面的默认用户名,密码是: admin/admin. 第一次登录之后,建议修改,并创建其他用户。
如果你将Docker安装运行在一个服务器上或者你想让别人访问你本地启动的RestBird容器, 你可以直接使用服务器或你本地机器的IP就可以了,例如http://{host-ip-address}:8080/, 这里 {host-ip-address} 指的是你机器的IP地址。
提示
RestBird是标准的Docker容器,你可以阅读Docker的官方文档了解更多的Docker的操作,譬如如何进行端口映射和目录映射。
Rest Api 测试
现在我们可以开始Rest API的测试了
创建一个Project 和 Case
- 登录RestBird的Web页面,切换到”Rest Project” 菜单, 点击 ”+ New” 按钮
- 创建一个工程目录 (test)
- 创建一个工程用例 (hello-google) 在刚才创建的工程目录下边
用例创建好了:
在创建用例的时候,我们支持选择编程语言来完成更高级的工作 : Python 或者 Golang。这个实例,我们选择Golang作为高级编程语言,后续会选择Python。
添加一个API请求
在测试用例’hello-google’ 下添加一个API请求,并进行测试:
- 在测试用例 “hello-google”下,点击 ”+ New” 按钮来添加一个API请求。
- 点击这个API可以看到API的详细信息,添加修改各个项目来完成这个API的创建
- 在API里边,我们有多个子菜单 Url and methods, Authentication, HTTP Header, Request Body 来构建这个API.
- Pre-Request 是前面我们提到的高级编程功能,前面几个子菜单不能完成一个API的构建,我们可以在这里编程来完成更高级的API构建。
- Response Check Script 是请求回复的检查脚本,这里我们可以编程的方式完成高级的回复的解析和检查。譬如在这个例子,我们检查回复的状态码是不是200。
执行API请求
可以在两个地方去执行一条创建的API
- 在API详情表单里边, 点击”Run Test”按钮,可以执行执行这条API,这个一般用于API的开发阶段,用于调试.
- 选择需要执行的API,点击”Run Selected” 按钮可以执行一组API.
查看API运行历史信息
无论是”Run Test”去执行某一条API,还是”Run Select”去执行一组API, 每一次的执行都会生条一条历史记录,这个记录里边记录了API的请求和回复详细信息.
构建API时可以使用变量功能
RestBird构建API支持强大的变量功能,他可以用来构建动态的API,以及减少很多重复信息的输入
API的录制与回放
下面介绍录制与回放功能
创建一个工程用例
- 登录到RestBird页面,切换到”Recording” 菜单,点击”+ New”按钮
- 创建一个工程目录 (test)
- 创建一个用例(github)
现在用例 ‘github’ 创建好了
设置录制器
录制用例创建好了后,我们需要舒服一个目标域名URL和代理端口来开启我们的录制工作,无比在启动录制之前,完成设置工作:
这里我们以录制 https://github.com为例,录制代理端口设置为8889.
提示
Restbird 的录制工作是通过反向代理来实现的,你可以参阅文档相关章节了解他的原理
开始录制
在设置完成后,点击”Start”按钮就可以开始录制了。RestBird容器启动的时候,如果是直接启动在Host的网络上(—net host)上,我就可以i直接访问刚才设置的代理端口,就可以开始录制了。如果RestBird容器没有启动在Host网络上,则需要把刚才说到代理端口映射到Host上,才可以访问:
- 映射代理端口到Host上任何一个可用端口(仅在方式2启动容器时需要)
sudo docker run -ti -p 8080:8080 -p 8089:8089 -v /var/my-first-project:/data/restbird restbird/rest
- 点击”refresh” 按钮,爽新录制到的最新的API. 点击具体的API可以看到API的请求与回复的详细信息
拷贝录制到的API到测试工程或者服务器模式工程
录制到的API可以拷贝到测试i工程来进行进一步的测试,也可以拷贝到服务器模拟工程来模拟API的回复。 更多信息可以参考文档相关章节
服务器模拟
服务器模拟经常在Web开发过程中,用来接耦合前后端的开发:
创建服务器模拟工程用例
- 登录RestBird网页,切换到 “Mock Server” 菜单,点击 ”+ New” 按钮
- 创建一个服务器模拟工程 (test)
- 创建一个服务器模拟工程用例
创建用例时,我们可以选择多种编程语言来完成高级的工作。这里我们以选择’Javascript’ 作为编程语言为例
模拟服务器设置
模拟服务器创建后,我们需要设置这个模拟服务器需要监听在哪个端口上以接收http请求, 点击”setting” 按钮完成设置.
这里我们以设置监听端口为8088为例:
提示
Restbird 模拟服务器支持三种编程语言: Java Script(基于nodejs express), Python, 和 golang, 更多详情参见文档。
添加模拟API
在 ‘hello’ 用例创建好后, 我们就可以给他添加模拟API了
- 点击”+ New” 按钮添加一个模拟API
- 点击API可以看到这个API的详情, 支持两种方式来进行回复(simple response 或者 advanced response)
- simple response, 在这种模式下,可以完全图形化的方式构建一个回复,包括状态码.Header和Body
- Advanced Request Handling, 在高级模式下,我们可以通过编程方式,进行高级的回复构建
运行模拟服务器
在添加完模拟API后,点击 “Start” 按钮就可以启动一个模拟服务器。如果RestBird容器是按照方式2启动的(非Host网络),我们则需要将模拟服务器的监听端口首先映射到Host上,才可以访问这个模拟服务器。
- 映射模拟服务器端口(只在方式2启动容器时需要):
sudo docker run -ti -p 8080:8080 -p 8088:8088 -v /var/my-first-project:/data/restbird restbird/rest
- 访问模拟API,例如 ’http://localhost:8088/helloworld’
模拟服务的数据状态存储(DB)
我们时常需要在模拟服务器上存储数据状态,来被多条API或者请求间贡献这些数据,RestBird可以在”advanced request handling” 模式下,通过编程方式支持:
这是一段代状态操作的代码实例:
function HandleRequest(req, res, state) {
var statecount = state.get("counter");
if (statecount) {
statecount.count = statecount.count + 1;
state.save("counter", statecount);
} else {
statecount = {
count: 1
};
state.save("counter", statecount);
}
res.send('hello, I am advanced Request handler:'+ statecount.count);
}
module.exports = HandleRequest
任务
RestBird提供任务编程,这是非常灵活的一部分。所谓任务就是一段完整的程序,你可以i在这里边做你想做的任何事情,譬如发送邮件,定时执行API,设置定时器等等。
创建任务
待完善 …
运行任务
待完善 …
版本控制与项目文件管理
RestBird的所有项目工程文件,都存放在Host机器上,然后映射方式与RestBird容器共享。我们可以i通过任何的文档编辑器来直接编辑这些项目文件,更可以通过git,svn等版本管理工具来管理项目文件。这位团队合作和API的管理带来了无与比拟的便利。
下面是我们这个教程的工程文件的一个组织实例:
$cd /var/my-first-project
$tree .
├── library # 所有 golang的第三方库
├── libraryPy # 所有 python的第三方库
├── libraryJs # 所有 javascript的第三方库
├── projects
│ ├── examples # golang/python/javascripts 的编程实例
│ ├── mock # 所有模拟服务器的文件存在该目录下边
│ │ └── test
│ │ └── hello # 一个模拟服务器的实例
│ │ ├── api0 # 一个模拟服务器的API的定义
│ │ │ ├── mock.js
│ │ │ ├── req.json
│ │ │ └── res.body
│ │ ├── api1
│ │ │ ├── mock.js
│ │ │ ├── req.json
│ │ │ └── res.body
│ │ ├── mock.json
│ │ ├── mocktask.js
│ │ └── type.json
│ ├── record # 所有录制工程实例存在该目录下边
│ │ └── test
│ │ └── github
│ │ ├── record.json
│ │ └── type.json
│ ├── rest # 所有测试工程实例存在该目录下边
│ │ └── test
│ │ └── hello-google
│ │ ├── api0 # 测试工程的一条API定义
│ │ │ ├── prerequest.go
│ │ │ ├── req.body
│ │ │ ├── req.json
│ │ │ └── resval.go
│ │ ├── api1
│ │ │ ├── prerequest.go
│ │ │ ├── req.json
│ │ │ └── resval.go
│ │ ├── api2
│ │ │ ├── prerequest.go
│ │ │ ├── req.json
│ │ │ └── resval.go
│ │ └── type.json
│ ├── task # 所有的任务文件存在这里
│ └── user # restbird 的用户管理信息
├── state # 模拟服务器的状态信息存在这里
└── version.json # 版本信息
git
如果项目文件已经被Git管理起来了,可以轻松的提交你的修改:
$cd your-project-folder
$git add .
$git commit -m "some messages"
$git push
如果没有,那么你需要建立一个git仓库,可以参考 Git文档
svn
待完善 …