教程: 如何使用RestBird

转自:
[http://api200.com/tutorial/tutorial.html#setup-for-the-tutorial]

简介

本教程是RestBird的快速使用教程,更详细的功能介绍请参考文档。

教程分为如下几个部分:

不必须阅读每一个章节,选择你感兴趣的去阅读

安装手册

安装包括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

  1. 登录RestBird的Web页面,切换到”Rest Project” 菜单, 点击 ”+ New” 按钮

  1. 创建一个工程目录 (test)

  1. 创建一个工程用例 (hello-google) 在刚才创建的工程目录下边

用例创建好了:

在创建用例的时候,我们支持选择编程语言来完成更高级的工作 : Python 或者 Golang。这个实例,我们选择Golang作为高级编程语言,后续会选择Python。

添加一个API请求

在测试用例’hello-google’ 下添加一个API请求,并进行测试:

  1. 在测试用例 “hello-google”下,点击 ”+ New” 按钮来添加一个API请求。

  1. 点击这个API可以看到API的详细信息,添加修改各个项目来完成这个API的创建

  • 在API里边,我们有多个子菜单 Url and methods, Authentication, HTTP Header, Request Body 来构建这个API.
  • Pre-Request 是前面我们提到的高级编程功能,前面几个子菜单不能完成一个API的构建,我们可以在这里编程来完成更高级的API构建。

  • Response Check Script 是请求回复的检查脚本,这里我们可以编程的方式完成高级的回复的解析和检查。譬如在这个例子,我们检查回复的状态码是不是200。

执行API请求

可以在两个地方去执行一条创建的API

  1. 在API详情表单里边, 点击”Run Test”按钮,可以执行执行这条API,这个一般用于API的开发阶段,用于调试.

  1. 选择需要执行的API,点击”Run Selected” 按钮可以执行一组API.

查看API运行历史信息

无论是”Run Test”去执行某一条API,还是”Run Select”去执行一组API, 每一次的执行都会生条一条历史记录,这个记录里边记录了API的请求和回复详细信息.

构建API时可以使用变量功能

RestBird构建API支持强大的变量功能,他可以用来构建动态的API,以及减少很多重复信息的输入

API的录制与回放

下面介绍录制与回放功能

创建一个工程用例

  1. 登录到RestBird页面,切换到”Recording” 菜单,点击”+ New”按钮

  1. 创建一个工程目录 (test)

  1. 创建一个用例(github)

现在用例 ‘github’ 创建好了

设置录制器

录制用例创建好了后,我们需要舒服一个目标域名URL和代理端口来开启我们的录制工作,无比在启动录制之前,完成设置工作:

这里我们以录制 https://github.com为例,录制代理端口设置为8889.

提示

Restbird 的录制工作是通过反向代理来实现的,你可以参阅文档相关章节了解他的原理

开始录制

在设置完成后,点击”Start”按钮就可以开始录制了。RestBird容器启动的时候,如果是直接启动在Host的网络上(—net host)上,我就可以i直接访问刚才设置的代理端口,就可以开始录制了。如果RestBird容器没有启动在Host网络上,则需要把刚才说到代理端口映射到Host上,才可以访问:

  1. 映射代理端口到Host上任何一个可用端口(仅在方式2启动容器时需要)
sudo docker run    -ti    -p 8080:8080 -p 8089:8089   -v /var/my-first-project:/data/restbird    restbird/rest
  1. 点击 “start” 按钮,访问代理URL

  2. 通过访问代理的URL来进行录制

  1. 点击”refresh” 按钮,爽新录制到的最新的API. 点击具体的API可以看到API的请求与回复的详细信息

拷贝录制到的API到测试工程或者服务器模式工程

录制到的API可以拷贝到测试i工程来进行进一步的测试,也可以拷贝到服务器模拟工程来模拟API的回复。 更多信息可以参考文档相关章节

服务器模拟

服务器模拟经常在Web开发过程中,用来接耦合前后端的开发:

创建服务器模拟工程用例

  1. 登录RestBird网页,切换到 “Mock Server” 菜单,点击 ”+ New” 按钮

  1. 创建一个服务器模拟工程 (test)

  1. 创建一个服务器模拟工程用例

创建用例时,我们可以选择多种编程语言来完成高级的工作。这里我们以选择’Javascript’ 作为编程语言为例

模拟服务器设置

模拟服务器创建后,我们需要设置这个模拟服务器需要监听在哪个端口上以接收http请求, 点击”setting” 按钮完成设置.

这里我们以设置监听端口为8088为例:

提示

Restbird 模拟服务器支持三种编程语言: Java Script(基于nodejs express), Python, 和 golang, 更多详情参见文档。

添加模拟API

在 ‘hello’ 用例创建好后, 我们就可以给他添加模拟API了

  1. 点击”+ New” 按钮添加一个模拟API

  1. 点击API可以看到这个API的详情, 支持两种方式来进行回复(simple response 或者 advanced response)

  • simple response, 在这种模式下,可以完全图形化的方式构建一个回复,包括状态码.Header和Body

  • Advanced Request Handling, 在高级模式下,我们可以通过编程方式,进行高级的回复构建

运行模拟服务器

在添加完模拟API后,点击 “Start” 按钮就可以启动一个模拟服务器。如果RestBird容器是按照方式2启动的(非Host网络),我们则需要将模拟服务器的监听端口首先映射到Host上,才可以访问这个模拟服务器。

  1. 映射模拟服务器端口(只在方式2启动容器时需要):
sudo docker run    -ti    -p 8080:8080 -p 8088:8088   -v /var/my-first-project:/data/restbird    restbird/rest
  1. 访问模拟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

待完善 …

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容