跳转到主要内容

罐头响应HTTP服务器

项目描述

https://travis-ci.org/a-musing-moose/bakedbeans.svg?branch=master

Baked Beans是一个以Python编写的REST服务HTTP存根服务器,名为烤豆酱,但实际上作为一个Docker容器很容易运行。

它采取了一种非常简单的方法,使用一个包含它所产生的存根响应的文件夹内容。

例如 GET https://:3000/path/to/some/resource 会映射到文件: <base_folder>/path/to/some/resource.get.json

注意在上面的例子中,所查找的文件名包括了使用的HTTP方法。

在其基本模式下,Baked Beans将简单地加载匹配的文件并将其管道回客户端。

它还支持有限的一些智能功能。构建为特定模式的结构化JSON文件可以由Baked Beans用于返回特定的响应。例如,它可以基于GET参数匹配响应。

安装

使用您喜欢的工具创建Python虚拟环境。然后使用pip安装 bakedbeans

(venv) $ pip install bakedbeans

运行

Baked Beans提供了一个简单的命令行可执行文件来运行服务器

(venv) $ baked /path/to/contents/folder
 * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)

您可以使用 --host 指定主机名,并使用 --port 指定它绑定的端口。

Baked Beans还考虑了Docker。要在Docker中运行Baked Beans,您需要将本地内容目录作为卷挂载。例如

docker run -it --rm -p 3000:3000 -v /full/path/to/contents:/contents moose/bakedbeans

This will run Baked Beans in a container that will remove itself once exit, mounting the /full/path/to/contents inside the container at /contents which is where Baked Beans is configured to load the contents from.

编写内容

Baked Beans将URL映射到文件路径,在路径末尾添加 .<method>.json。有一些例外,例如如果URL以 / 结尾,它将添加 index.<method>.json

示例

请求URL

映射路径

GET https://:3000/somewhere

<base>/somewhere.get.json

POST https://:3000/another

<base>/another.post.json

GET https://:3000/

<base>/index.get.json

默认情况下,文件内容加载后会原封不动地反馈给请求。

然而,如果您想对响应进行巧妙处理,可以在bean格式中编写JSON文件。Beans是我为这个项目创造的,它具有JSON对象的形式。例如

{
    "_bean": true,
    "responses": [
        {
            "params": {
                "product": "1111"
            },
            "contents": {
                "id": 1111,
                "name": "Product A"
            }
        },
        {
            "params": {
                "product": "2222"
            },
            "status": 203,
            "contents": {
                "id": 2222,
                "name": "Product B"
            }
        }


    ]

}

上面的bean根据伴随请求的GET参数匹配响应。例如,https://:3000/path?product=1111将匹配第一个响应并返回contents的值。参数product=2222将匹配第二个。如果没有找到匹配项,则选择第一个。

请注意,第二个响应指定了一个状态,这允许您指定用于响应的特定状态码。如果没有指定,则使用基于HTTP方法的默认值。

默认状态码如下

方法

代码

GET

200

POST

201

DELETE

204

PUT

200

PATCH

200

<OTHER>

200

目前仅支持GET参数匹配,但添加头和正文匹配会很好,以及使用正则表达式值和使用匹配标准在内容中...

命中与错过

上面的描述假设一切顺利。URL与内容文件匹配,内容文件是有效的JSON,如果需要,还有有效的bean。但是当事情不匹配时会发生什么?

内容未找到

404 状态,正文为 {"error": "content not found the/missing/path"}

无效内容文件

500 状态,正文为 {"error": "content invalid"}

Bean验证失败

500 状态,正文为 {"error": "This is one mouldy bean"}

有关遇到错误的更详细描述,请参阅日志。

项目详情


下载文件

下载适合您平台的应用程序文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

bakedbeans-0.1.4.tar.gz (6.5 kB 查看哈希值)

上传时间

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面