罐头响应HTTP服务器
项目描述
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
映射路径
<base>/somewhere.get.json
<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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 68317c349c136c778dca0443b674ada73e77e484bc0e81794821603c7f0bf6f5 |
|
MD5 | 455aa338ca12262ce60960b3d88ea033 |
|
BLAKE2b-256 | 5056621e5115ae58ea461f1b66ee62ba75b6a7bfa1c3ded478760ef78ac40525 |