跳转到主要内容

通过解析Swagger定义生成API客户端

项目描述

Python版Swagger代码生成器

Continuous Integration

安装

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 

代码生成器(也称为渲染器)

项目中有两种代码生成策略

  1. 通过PackageRenderer将客户端以常规Python包的形式渲染
  2. 通过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 查看散列值)

上传时间 Python 3

由以下机构支持

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