用于访问启用了swagger的api的库
swaggerpython的Python项目详细描述
大摇大摆的Python
这是对swaggerpython的更新,支持python3并进行了一些修复。
欢迎发表减贫战略和问题。
关于
py是一个用于 Swagger定义的api。
招摇本身最好在招摇主页上描述:
Swagger is a specification and complete framework implementation for describing, producing, consuming, and visualizing RESTful web services.
Swagger specification定义 如何使用swagger描述api。
py还支持websocket扩展,允许websocket 记录并自动生成websocket客户端代码。
用法
安装pypi的最新版本。这是我们的分叉版本。
$ sudo pip install swaggerpython
或者使用setup.py脚本从源代码安装。
$ sudo ./setup.py install
api
swagger.py将从启用了swagger的对象模型中动态构建对象模型 restful api。
下面是一个使用Asterisk REST Interface
#!/usr/bin/env pythonimportjsonfromswaggerpython.clientimportSwaggerClientfromswaggerpython.http_clientimportSynchronousHttpClienthttp_client=SynchronousHttpClient()http_client.set_basic_auth('localhost','hey','peekaboo')ari=SwaggerClient("http://localhost:8088/ari/api-docs/resources.json",http_client=http_client)ws=ari.events.eventWebsocket(app='hello')formsg_striniter(lambda:ws.recv(),None):msg_json=json.loads(msg_str)ifmsg_json['type']=='StasisStart':channelId=msg_json['channel']['id']ari.channels.answer(channelId=channelId)ari.channels.play(channelId=channelId,media='sound:hello-world')ari.channels.continueInDialplan(channelId=channelId)
狂妄自大的代码生成
有一个基于胡子的代码生成器的开始,但是 还没有功能。
数据模型
由swagger_model模块提供的数据模型几乎是 与原始的swagger api资源列表和api相同 宣言。这意味着,如果向 文档(例如_author或_copyright字段)将携带 前进到对象模型。我建议用 下划线,以避免与将来版本的招摇发生冲突。
有一些有意义的区别。
- 资源列表
- 已添加file和base_dir字段,引用 原始.json文件。
- resource_listing的api数组中的对象包含 字段api_declaration,它是 引用的API文档。
- API声明
- 已添加一个file字段,引用原始的.json 文件。
开发
代码使用Sphinx进行记录,其中 允许IntelliJ IDEA 以便更好地推断自动完成的类型。
为了保持隔离,我还建议安装(和使用) virtualenv。
$ sudo pip install virtualenv $ mkdir -p ~/virtualenv $ virtualenv ~/virtualenv/swagger $ . ~/virtualenv/swagger/bin/activate
Setuptools用于 建筑。^使用{a8} 对于单元测试,将coverage插件安装到 生成代码覆盖率报告。传递--with-coverage以生成 代码覆盖率报告。报告的html版本被放入 cover/index.html。
$ ./setup.py develop # prep for development (install deps, launchers, etc.) $ ./setup.py nosetests # run unit tests $ ./setup.py bdist_egg # build distributable
待办事项
我的?