connexion-api-first应用程序与openapi/swagger和flask

atman-connexion的Python项目详细描述


连接

在https://gitter.im/zalando/connexion加入聊天travis ci build status工作服状态最新版本开发状态python versionslicense

connexion是一个基于openapi规范自动处理http请求的框架。 (以前称为swagger spec)您的api在yaml格式中的描述。连接允许你 编写一个openapi规范,然后将端点映射到python函数;这使得 独一无二,因为许多工具都是基于python代码生成规范的。你可以描述一下 rest api要尽可能详细;然后connexion保证它能像您一样工作 指定。

我们这样建立连接是为了:

  • 简化开发过程
  • 确认对API外观的期望

连接功能:

  • 根据 您的规格
  • 提供一个web扩展控制台ui,以便api的用户可以 拥有实时文档,甚至可以调用api的端点 通过它
  • 处理基于OAuth 2令牌的身份验证
  • 支持API版本控制
  • 支持有效载荷的自动序列化。如果你 规范定义端点返回json,connexion将 自动序列化返回值并设置正确的 在http头中键入内容。

为什么连接

使用connexion,首先编写规范。connexion然后调用您的python 代码,处理从规范到代码的映射。这个 鼓励您编写规范,以便 开发人员可以理解您的api的功能,eve在你写之前 单行代码。

如果多个团队依赖于您的api,则可以使用connexion轻松地向他们发送api文档。这保证了您的api将遵循您编写的规范。这是一个不同于框架(如hug)提供的过程,它在编写代码之后生成规范。基于代码生成规范的一些缺点是,它们往往会缺少详细信息,或者将文档与应用程序的代码逻辑混合在一起。

连接2.0的新功能:

  • 必须通过"options"参数提供应用程序和API选项( 旧样式的选项已被删除)。
  • 必须在"Consumes"中指定表单内容类型才能使用表单数据。
  • 操作 接口已在 抽象操作 类中正式化。
  • 操作 类已重命名为 swagger2operation
  • 数组参数反序列化现在更接近于swagger 2.0规范。 在多次传递查询参数且collectionformat为csv或pipes的情况下,将使用最右边的值。 例如, ?q=1,2,3&q=4,5,6 将导致q=[4,5,6]。 通过将collectionformat设置为 multi ,或者通过导入 decorators.uri\u parsing.alwaysmultiurparser 并将 parser class=alwaysmultiurparser 传递到您的api,旧的行为是可用的。
  • 规范验证程序库已从 swagger spec validator 更改为 openapi spec validator
  • 以前引发的错误 swaggervalidationerror 现在引发 invalidSpecification 异常。 所有规范验证错误都应包装为 invalidSpecification
  • 对nullable/x-nullable、readonly和writeonly/x-writeonly的支持已添加到标准json架构验证器中。
  • 现在可以在api级别(而不是app级别)指定自定义验证器。
  • 增加了对基本身份验证和apikey身份验证的支持
  • 如果定义了不支持的安全性要求,或者x-tokeninfofunc / x-tokeninfourl 丢失,那么connexion现在拒绝请求,而不允许在没有安全检查的情况下进行访问。
  • 不再支持访问connexion.request.user/ flask.request.user ,请改用connexion.context['user']

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

推荐PyPI第三方库


热门话题
java Android HttpClient cookies   如何使用Java在远程系统上运行SSH命令?   java从字符串数组中的字符串末尾删除“,”   在One plus 3t手机上,当应用程序被终止或从最近的应用程序中刷出时,java Android FCM推送通知不起作用   java如何使垂直滚动条始终位于jtable的末尾   在java中解析迄今为止“未知”的字符串   javascript在Java中获取Nashorn JsonObject   java windows 10和ubuntu可以使用相同的JDK吗?   java在不同的文件中记录不同的日志。但所有日志都放在同一个文件中   具有特定jdk的java Gradle构建项目   xml Java web服务生成错误响应   javascript Jaggery文件更改不显示   java输出二进制搜索树数组   将BufferedReader解析为JSON对象时,java在位置处意外标记文件结尾