使用Swagger Codegen生成Python服务端客户端代码

10 篇文章 0 订阅
7 篇文章 0 订阅

生成服务端客户端代码的方式有很多种:

  1. 通过Swagger Editor生成
  2. 通过Swagger generator API生成
  3. 通过Swagger Codegen CLI生成

支持的语言和框架非常丰富:
服务端:
在这里插入图片描述
客户端:
在这里插入图片描述
这里以Pyhton语言和Flask框架为例

服务端

下载好代码后解压缩

.
├── controllers
│   ├── __init__.py
│   ├── pet_controller.py
│   ├── store_controller.py
│   └── user_controller.py
├── encoder.py
├── __init__.py
├── __main__.py
├── models
│   ├── api_response.py
│   ├── base_model_.py
│   ├── category.py
│   ├── __init__.py
│   ├── order.py
│   ├── pet.py
│   ├── tag.py
│   └── user.py
├── swagger
│   └── swagger.yaml
├── test
│   ├── __init__.py
│   ├── test_pet_controller.py
│   ├── test_store_controller.py
│   └── test_user_controller.py
└── util.py

4 directories, 21 files

可以看到符合MVC设计模式,只不过没有V

有两种部署方式:

  1. 非Docker方式
  2. Docker方式

无论哪种方式,都需要将requirement.txt文件中‘connexion == 1.1.15’改为‘connexion[swagger-ui]’,从而安装最新版本带swagger_ui的connexion,这是因为1.1.15版对最新版的Flask不匹配,之后会报错~

如果不安装connexion[swagger-ui]’则会报错:

The swagger_ui directory could not be found.
    Please install connexion with extra install: pip install connexion[swagger-ui]
    or provide the path to your local installation by passing swagger_path=<your path>

在这里插入图片描述
如果你是用的官方Petstore范例,则可能会出现报错:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/src/app/swagger_server/__main__.py", line 5, in <module>
    from swagger_server import encoder
  File "/usr/src/app/swagger_server/encoder.py", line 4, in <module>
    from swagger_server.models.base_model_ import Model
  File "/usr/src/app/swagger_server/models/__init__.py", line 9, in <module>
    from swagger_server.models.pet import Pet
  File "/usr/src/app/swagger_server/models/pet.py", line 12, in <module>
    class Pet(Model):
  File "/usr/src/app/swagger_server/models/pet.py", line 18, in Pet
    def __init__(self, id: int=None, category: Category=None, name: str=None, photo_urls: List[str]=None, tags: List[Tag]=None, status: str=None):  # noqa: E501
NameError: name 'Category' is not defined

需要修改
./swagger_server/models/pet.py

  from swagger_server.models.base_model_ import Model
+ from swagger_server.models.category import Category
+ from swagger_server.models.tag import Tag
  from swagger_server import util

参考:https://github.com/swagger-api/swagger-codegen/issues/10193#issue-602616563

最后,访问http://0.0.0.0:8080/v2/ui/就能看到UI
在这里插入图片描述
测试一下:
在这里插入图片描述
返回“do some magic”是正常的

客户端:

下载解压

Setuptools部署:

# 安装
>>> python3 setup.py install --user --record files.txt
# 卸载
>>> cat files.txt | xargs sudo rm -rf
```b
参考:[https://gist.github.com/myusuf3/933625](https://gist.github.com/myusuf3/933625)
### pip部署:
```b
# 安装
>>> pip3 install .
# 卸载
>>> pip3 uninstall .

使用:

>>> import swagger_client
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值