4 个版本
0.1.3 | 2024 年 5 月 2 日 |
---|---|
0.1.2 | 2024 年 5 月 2 日 |
0.1.1 | 2024 年 4 月 30 日 |
0.1.0 | 2024 年 4 月 29 日 |
1358 在 Web 编程 中
每月 152 次下载
31KB
460 行
openapi-mocker
从 OpenAPI 3.0 规范创建模拟服务器。
安装
- 使用 cargo 安装
cargo install openapi-mocker
用法
-
创建 OpenAPI 3.0 规范文件。例如,
openapi.yaml
openapi: 3.0.0 info: title: Example API version: 1.0.0 paths: /hello: get: responses: '200': description: OK content: application/json: schema: type: object properties: message: type: string examples: default: value: message: Hello, world! '400': description: Bad Request content: application/json: schema: type: object properties: message: type: string examples: default: value: message: Bad request
-
运行模拟服务器
openapi-mocker openapi.yaml
- 或者,使用 docker 运行
docker run \ -v $(pwd)/tests/testdata/petstore.yaml:/openapi.yaml \ -p 8080:8080 \ thisk8brd/openapi-mocker:latest \ /openapi.yaml
-
向模拟服务器发送 http 请求
curl -i https://127.0.0.1:8080/hello
响应应该是:
json {"message":"Hello, world!"}
请求不存在的路由
curl -i https://127.0.0.1:8080/does-not-exist
响应应该是 404 未找到。
选项
--port
或-p
:服务器运行的端口。默认为8080
。
执行请求
您可以使用 OpenAPI 规范中定义的自定义示例来测试不同的响应。自定义示例可以以不同的方式定义和请求。
按路径请求
您可以为要匹配的精确路径定义一个示例。示例
openapi: 3.0.0
info:
title: Example API
version: 1.0.0
paths:
/hello/{name}:
get:
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
default:
value:
message: Hello, world!
/hello/jon_snow:
value:
message: You know nothing, Jon Snow!
按精确路径请求示例
curl -i https://127.0.0.1:8080/hello/jon_snow
响应应该是
{"message":"You know nothing, Jon Snow!"}
请求默认示例
curl -i https://127.0.0.1:8080/hello/arya_stark
响应应该是
{"message":"Hello, world!"}
按查询参数请求
您可以为要匹配的查询参数定义一个示例。
示例
openapi: 3.0.0
info:
title: Example API
version: 1.0.0
paths:
/hello:
get:
parameters:
- name: name
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
default:
value:
message: Hello, world!
"query:name=sansa":
value:
message: Sansa Stark
按查询参数请求示例
curl -i https://127.0.0.1:8080/hello?name=sansa
响应应该是
{"message": "Sansa Stark"}
不匹配查询参数的请求
curl -i https://127.0.0.1:8080/hello?name=arya
响应应该是
{"message": "Hello, world!"}
按头请求
您可以为要匹配的头定义一个示例。
示例
openapi: 3.0.0
info:
title: Example API
version: 1.0.0
paths:
/hello:
get:
parameters:
- name: name
in: header
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
default:
value:
message: Hello, world!
"header:x-name=tyrion":
value:
message: Tyrion Lannister
按头请求示例
curl -i https://127.0.0.1:8080/hello -H "x-name: tyrion"
响应应该是
{"message": "Tyrion Lannister"}
不匹配头的请求
curl -i https://127.0.0.1:8080/hello
响应应该是
{"message": "Hello, world!"}
注意:匹配的顺序如下:路径、查询、头。还要注意的是,请求将返回上述顺序中找到的第一个匹配项。如果没有找到匹配项,将返回默认示例。
注意:匹配将应用于 OpenAPI 规范中所有示例和响应。
贡献
欢迎贡献!请参阅贡献指南。
许可证
MIT
依赖项
约19-31MB
约556K SLoC