用于访问启用了swagger-1.1的api的异步库

trio_swagger11的Python项目详细描述


关于

trio_u swagger11是swagger.py的三个兼容克隆,能够 了解Swagger 1.1定义(仅限)。

因为swagger已经被重命名为openapi,现在已经有了3.0版。 (并且有一个实际的规范——与swagger 1.1不同)这个库是 (主要)仅与星号一起使用,星号仍然使用Swagger 1.1 声明。

trio-swagger11支持websocket扩展,允许websocket 记录并自动生成websocket客户端代码。

来自swagger.py:

py是一个用于 Swagger定义的api。

招摇本身最好在招摇主页上描述:

Swagger is a specification and complete framework implementation for describing, producing, consuming, and visualizing RESTful web services.

Swagger specification定义 如何使用swagger描述api。

用法

安装pypi的最新版本。

$ sudo pip install trio_swagger11

或者使用setup.py脚本从源代码安装。

$ sudo ./setup.py install

api

trio_u swagger11将从启用了swagger的对象模型中动态构建对象模型 restful api。

下面是一个使用Asterisk REST Interface

#!/usr/bin/env python3importjsonimporttriofromtrio_swagger11.clientimportSwaggerClientfromtrio_swagger11.http_clientimportAsynchronousHttpClienthttp_client=AsynchronousHttpClient()http_client.set_api_key('localhost','hey:peekaboo')asyncdefrun(ari,msg_json):channelId=msg_json['channel']['id']awaitari.channels.answer(channelId=channelId)awaitari.channels.play(channelId=channelId,media='sound:hello-world')# In a real program you should wait for the PlaybackFinished event insteadawaittrio.sleep(3)awaitari.channels.continueInDialplan(channelId=channelId)asyncdefmain():ari=SwaggerClient("http://localhost:8088/ari/api-docs/resources.json",http_client=http_client)ws=ari.events.eventWebsocket(app='hello')asyncformsginws:ifnotisinstance(msg,WebsocketDataMessage):breakelifnotisinstance(msg,WebsocketTextMessage):continue# ignore bytesmsg_json=json.loads(msg.data)ifmsg_json['type']=='StasisStart':awaitnursery.start_soon(run,ari,msg_json)if__name__=="__main__":trio.run(main)

数据模型

swagger_model模块提供的数据模型几乎是 与原始的swagger api资源列表和api相同 宣言。这意味着,如果向 文档(例如_author_copyright字段)将携带 前进到对象模型。我建议用 下划线,以避免与将来版本的招摇发生冲突。

有一些有意义的区别。

  • 资源列表
  • 已添加filebase_dir字段,引用 原始.json文件。
  • resource_listingapi数组中的对象包含 字段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 pytest    # run unit tests
$ ./setup.py bdist_egg # build distributable

测试

只需运行python3 setup.py pytest

请注意,目前无法单独测试此模块。 以前的版本需要httpretty的黑客版本。

待办事项:改用本地服务器。

许可证

版权所有(c)2013,Digium,Inc. 版权所有(c)2018,Matthias Urlichs

Trio_-Swagger11的许可证是BSD 3-Clause License

当前作者谦卑地请求您共享任何进一步的错误修复或 此代码的增强功能。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij和Eclipse无法找到库工件   java Mapbox Android Symbolayer重置筛选器   java如何在顶部显示特定的recyclerview项?   java如何在Hibernate中使用@Qualifier   我想计算特定文本webdriver java在多个页面上可用的HTML表中的数据   java捕获Spring MVC REST服务抛出的Jersey REST客户端的异常   java Hibernate flush()影响事务   密钥绑定Java密钥绑定   sonarqube java,sonar,圈复杂度   使用3DES在Java中加密,在SQL Oracle中解密   regex正则表达式在regex101上工作。com,但不是prod   JAVAsql。SQLException:ORA00600:内部错误代码,参数:[12811],[93233]   java H2数据库存储在哪里?   java如何避免在使用Jackson时从JSON字符串反序列化空JSON数组元素