生成服务端客户端代码的方式有很多种:
- 通过Swagger Editor生成
- 通过Swagger generator API生成
- 通过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
有两种部署方式:
- 非Docker方式
- 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