4个稳定版本
1.2.1 | 2024年8月11日 |
---|---|
1.2.0 | 2024年7月28日 |
1.1.0 | 2024年7月16日 |
1.0.0 | 2024年2月23日 |
在 命令行工具 中排名 106
每月下载量 250
125KB
3K SLoC
Open API to Hurl
一个将Open API规范转换为Hurl文件(https://hurl.dev/)的工具。
安装
Cargo
cargo install openapi-to-hurl
Brew
brew tap ethancarlsson/openapi-to-hurl
brew install openapi-to-hurl
注意:所有二进制文件都是为MacOS设计的,Linux用户需要使用Cargo进行安装。
使用方法
openapi-to-hurl接受Open API 3规范的路径,生成hurl请求并将它们写入stdout。
# Spec can be a JSON file
% openapi-to-hurl ./openapi.json
# or a YAML file
% openapi-to-hurl ./openapi.yaml
openapi-to-hurl也可以接受来自stdin的规范
% cat ./openapi.json | openapi-to-hurl
# Or more usefully
% some-tool-generating-specs | openapi-to-hurl
然后可以将stdout传递给hurl
% cat ./openapi.json | openapi-to-hurl | hurl --variable host=https://example.com
注意:“host”默认创建为一个变量。这使得在本地、预发布和生产之间切换主机更加方便,但也意味着“host”需要作为变量传递给hurl。
生成.hurl文件
这个工具的主要动机之一是使使用hurl开始探索新的API变得更加容易。为此,我们将每个hurl请求分离到不同的文件中会更方便。
% openapi-to-hurl test_files/pet_store.json --out-dir test_hurl_files
INFO Created or updated 4 hurl files in test_hurl_files
% ls test_hurl_files
addPet.hurl listPets.hurl petstore.swagger.io_v1 showPetById.hurl updatePet.hurl
然后您可以通过CLI使用hurl运行这些文件。
% hurl test_hurl_files/*.hurl --variables-file=test_hurl_files/petstore.swagger.io_v1
测试生成
测试生成是这个工具的另一个非常明显的用例。
我们可以生成与.hurl文件一起使用的断言,如下所示
% openapi-to-hurl test_files/pet_store.json --validation body
POST {{host}}/pets
{
"id": 3,
"inner": {
"test": "string"
},
"name": "string",
"photo_urls": [
"https://example.com/img.png",
"https://example.com/img2.png"
],
"tag": "string"
}
HTTP *
[Asserts]
status < 400
jsonpath "$" isCollection
jsonpath "$.id" isInteger
jsonpath "$.inner" isCollection
jsonpath "$.inner.test" isString
jsonpath "$.name" isString
jsonpath "$.photo_urls" isCollection
运行以下命令将测试整个API的响应。
openapi-to-hurl test_files/pet_store.json --validation body | hurl --variable host=http://petstore.swagger.io/v1
然而,hurl缺少在属性可以具有多种类型的地方创建断言的工具。因此,每当这个工具检测到不是必需的属性、可空的属性或由于其他任何原因可以具有多种类型的属性时,它都会忽略该属性。
这意味着上面的命令可能有助于检测API是否与规范不匹配,但它无法检测API是否与规范匹配。
这意味着这个工具最好用作测试的起点,然后手动编辑。
openapi-to-hurl test_files/pet_store.json --validation body -o output/directory
限制
openapi-to-hurl仅适用于JSON和纯文本内容类型。
更新日志
更新日志可在:https://github.com/ethancarlsson/openapi-to-hurl/blob/master/CHANGELOG.md
文档
在线手册可在以下位置获取:https://ethancarlsson.github.io/openapi-to-hurl/
许可证
MIT许可证(MIT)
依赖关系
约12–26MB
约387K SLoC