connexion-api-first应用程序与openapi/swagger和flask
atman-connexion的Python项目详细描述
连接
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)提供的过程,它在编写代码之后生成规范。基于代码生成规范的一些缺点是,它们往往会缺少详细信息,或者将文档与应用程序的代码逻辑混合在一起。
其他来源/提及
- Zalando Tech博客文章 API优先
- 列在 网站上的连接
- 博客文章: 在python中创建有效的微服务
连接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']