通过解析Swagger定义生成API客户端
项目描述
Python版Swagger代码生成器
安装
pip install swagger-codegen
Swagger版本
目前,仅支持OpenApi 3.x(即Swagger 3)。
用法示例
# Generate Petstore Api client using 'petstore' package name.
swagger_codegen generate https://petstore3.swagger.io/api/v3/openapi.json petstore
python
Python 3.8.1 (default, Jan 23 2020, 13:58:52)
[Clang 11.0.0 (clang-1100.0.33.16)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from petstore import new_client, Configuration
>>> from swagger_codegen.api.adapter.requests import RequestsAdapter
>>> from petstore.apis.user.createUser import User
>>> client = new_client(RequestsAdapter(), Configuration(host="http://petstore3.swagger.io"))
>>> pets = client.pet.findPetsByStatus()
>>> print(pets)
[Pet(category=Category(id=1, name='Dogs'), id=69, name='aHldog', photoUrls=['string'], status='available',...]
您可以在项目的示例目录中查看示例源代码,该源代码演示了PetStore API。
您可以使用以下命令测试示例客户端:
# Run from project directory.
python -m example.petstore_example
代码生成器(也称为渲染器)
项目中有两种代码生成策略
- 通过
PackageRenderer
将客户端以常规Python包的形式渲染 - 通过
InstallablePackageRenderer
将客户端以可安装的Python包的形式渲染
您可以通过在.swagger-codegen.toml
文件中指定renderer
键来选择使用哪个渲染器。请参阅.swagger-codegen.toml.example
以获取允许的值。
已知问题
- 由于每次函数或数据传输对象顺序不同,生成的文件内容在不同运行中可能不同。客户端功能保持不变,但每次生成代码时,git都会生成大量的差异。
- 不完全符合Openapi规范:该项目是为了满足我个人的需求:支持由FastAPI生成的模式,我需要这个功能非常快,这就是为什么有太多的依赖项(
schemathesis
)和不相容性。无论如何,我期待随着时间的推移修复这些问题。 - 由于空闲时间少,对问题的反应可能会有延迟(但是带有测试的PR会尽快合并)。
进行中
尽管库在生成API方面给出了很好的结果,但它仍在开发中。有些测试缺失。API将在稳定发布前不断更新。
无论如何,将尽可能地保持向后兼容性。
代码尚未优化,大部分都很乱,因为这个项目最初是一个假期原型。
此外,example
目录可能与实际生成的代码不同步。
贡献者
您可以在贡献者页面看到所有帮助此项目的人
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码发行版
swagger-codegen-0.1.31.tar.gz (21.5 kB 查看散列值)
构建分发版
swagger_codegen-0.1.31-py3-none-any.whl (33.4 kB 查看散列值)
关闭
swagger-codegen-0.1.31.tar.gz的散列值
算法 | 散列值 | |
---|---|---|
SHA256 | 5a6f53151640a1178f4d291e17718a104a96f16337af25e2988072fc2106b3a1 |
|
MD5 | af6e0b4d510143154800eb45cd5dfbf1 |
|
BLAKE2b-256 | 77953019581fec32e932e701d1f965fb4ead814dbfffc7c086037c2b1e8f6e7d |
关闭
swagger_codegen-0.1.31-py3-none-any.whl的散列值
算法 | 散列值 | |
---|---|---|
SHA256 | b97b52ebb50f4408858a3bf58ad65d7241e00aa7803f4f350c8f9f1809b67ad3 |
|
MD5 | 9e6563389f4ba0abfbfcb5e98bc9782f |
|
BLAKE2b-256 | dec820a6dddd8b99b45f8bd5e016afa9c18551c53f78d749e085834670bb227c |