Pyramid addon for openapi 3 validation

pyramid-openapi3的Python项目详细描述


根据OpenAPI 3.0文档验证金字塔视图

Circleci for Pyramid_OpenAPI3(Master Branch)测试覆盖率(主分支)测试覆盖率(主分支)PYPI上最新版本的金字塔OpenAPI3支持的python版本license:mit由这些伟大的人建造!在自由节点IRC上的金字塔中与我们交谈

安心

这个包存在的原因是为了在提供restful api时让您安心。你可以专注于生活中更重要的事情,而不是追查可预防的错误并向消费者道歉。

  • 您的api文档永远不会过期,因为它是从您编写的api文档中生成的。
  • 文档附带了针对api中每个端点的试用示例。您不必提供(和维护)curl命令来展示您的api是如何工作的。用户可以在浏览器中自己尝试。
  • 您的api文档总是有效的,因为如果文档不符合openapi 3.0规范,您的金字塔应用程序甚至都不会启动。
  • 自动请求有效载荷验证和净化。您的视图不需要任何代码f或验证和输入卫生。视图代码只处理业务逻辑。无需编写大量的测试,因为每个请求及其有效负载在到达您的视图代码之前都会根据您的api文档进行验证。
  • 您的api响应始终与api文档匹配。视图中的每个响应都将根据文档进行验证,如果响应与文档中指定的某个api端点的输出不完全匹配,则返回500内部服务器错误
  • 唯一的真理来源。由于上面概述的检查,您可以确保您的api文档所说的事实上是实际发生的事情。当你问一个与api相关的问题,比如"再次提醒我,endpoint/user/info返回哪个字段"时,你只有一个可以参考的事实来源。
  • 基于金字塔,成熟的python web框架。Mozilla、Yelp、Rollbar和SurveyMonkey等公司的信任金字塔也运行在金字塔上。Pyramid经过了全面的测试,并记录了,提供了灵活性、性能和大量的生态系统。g-pyramid.html" rel="nofollow">高质量附加组件

功能

  • 使用openapi规范验证器根据openapi 3.0规范验证api文档(例如,openapi.yamlopenapi.json)。
  • 为您的api生成并提供招摇过市的试用文档
  • 使用openapi core根据api文档验证传入请求和传出响应。

开始

  1. 在棱锥图项目中声明棱锥图openapi3为依赖项。

  2. 包括以下行:

config.include("pyramid_openapi3")config.pyramid_openapi3_spec('openapi.yaml',route='/api/v1/openapi.yaml')config.pyramid_openapi3_add_explorer(route='/api/v1/')
  1. 使用openapi视图谓词来启用请求/响应验证:
@view_config(route_name="foobar",openapi=True,renderer='json')defmyview(request):returnrequest.openapi_validated.parameters

对于请求,request.openapi_validated有两个字段可用:参数正文。 对于响应,如果负载与API文档不匹配,则会引发异常。

演示/示例

此软件包提供了两个示例:

这两个例子都附带了测试,这些测试展示了金字塔OpenAPI的错误处理和验证功能。

a完全构建的应用程序,100%测试覆盖,提供arealworld.ioAPI,可在niteoweb/pyramid realworld示例应用程序获得。它是一个Heroku可部署的金字塔应用程序,为类似medium.com的社交应用程序提供了一个API。我们鼓励您使用它作为下一个项目的脚手架。

设计防御

金字塔的作者认为h验证手动编写的api文档的方法优于从python代码生成api文档的方法。原因如下:

a)文档的生成和验证都是有损过程。运行生成/验证的底层库总是缺少某些内容。要么是来自最新openapi规范的特性,要么是实现缺陷。为了生成api文档中可能只用于前端的部分,必须派生底层库是很不幸的。

另一方面,验证允许跳过尚未支持的验证部分,并且不阻止团队发送文档。

b)验证方法确实牺牲了干性,必须先编写api文档,然后在金字塔中编写(视图)代码。一开始觉得有点多余。然而,这提供了意图和实现之间的明确分离。

c)生成方法的缺点是,即使是对于金字塔后端不处理的api文档部分,也必须编写python代码,因为它可能由不同的系统处理,或者只针对文档,或者只针对api的客户端。这会用不属于金字塔的代码填充金字塔代码基。

运行测试

您需要在计算机上安装pipenv和python 3.7。然后您可以运行:

$ make tests

相关套餐

这些包处理相同的问题空间:

在野外使用

在生产中使用金字塔OpenAPI3的几个项目:

  • Woocart API-Woocart管理的Woocommerce服务的用户控制面板。

更改日志

0.4.0(2019-08-05)

  • 修复头和cookie中的处理参数。[GWei]

  • 引入requestvalidationerror和responsevalidationerror异常 赞成金字塔openapi3_validation_error_view指令。 [GWei]

0.3.0(2019-05-22)

  • 添加了类型提示。[ZUPO]
  • 添加了对覆盖相同问题空间的其他包的附加引用。[ZUPO]
  • 将回购转移到Pylons Github组织。[Stevepiercy,祖波]
  • 添加了一个更内置的todo应用程序示例。[ZUPO]

0.2.8(2019-04-17)

  • 修正双重注册视图。[ZUPO]
  • 添加了单个文件示例。[ZUPO]

0.2.7(2019-04-14)

  • 调整发布过程。[ZUPO]

0.2.6(2019-04-14)

  • 增加了一系列测试。[ZUPO]

0.2.5(2019-04-08)

  • 通过Circleci自动释放。[ZUPO]

0.1.0(2019-04-08)

  • 初次发布。[ZUPO]

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

推荐PyPI第三方库


热门话题
java理解泛型   java Guava:如何自定义减少多重映射?   java无法构建实体管理器工厂JPA/Hibernate   不区分大小写的LDAP搜索   在java中同时调用所有类对象中的方法   java做高级数字计算?2.1k等于2100等。。?   java Camel netty组件:未能创建选择器   exceljava。lang.ClassCastException:ExcelStreamAction无法强制转换为com。开放交响乐团。xwork2。行动   java避免对嵌套a4j:区域进行验证   java如何使一帧在1秒内显示50次,每次显示时消失   java一个HashMap的遍历,我得到NullPointerException   windows HP Stream 8平板电脑。。。Java swing JScrollPane滚动在触摸屏上不工作   java如何在运行时根据用户/程序员的需要自动增加数组的大小?