如何在 OpenAPI 3.x 规范生成的 python 代码中禁用客户端验证

问题描述 投票:0回答:2

我有一个应用程序,需要使用内部开发的 python 自动化进行测试。最初,该应用程序是使用 Swagger 2.x 规范开发的。现在已迁移到使用 Open API 3.x

当它是 Swagger 2.x 规范时,我曾经使用 swagger-codegen-cli-2.4.21.jar 来生成 python 客户端库,我们最终使用它来编写自动化。使用 2.4.21 jar,我们可以禁用客户端验证(configuration.py)

但是在迁移到 OpenAPI 3.x 后,我无法使用 2.4.21 jar,因为它不受支持。所以我使用 3.0.36 jar 来生成 python 客户端库。但这没有禁用客户端验证的选项(在configuration.py中)。这实际上会产生很多问题,因为我们在 GET 调用期间收到 ValueErrors。

我看到有一些讨论发生在同样的事情上,但没有一个足够结论性的,以至于它实际上在 3.x 中得到了修复

https://github.com/OpenAPITools/openapi-generator/pull/4137

https://github.com/swagger-api/swagger-codegen/issues/5530

https://github.com/swagger-api/swagger-codegen/pull/9717

所以我需要帮助来了解这是否仍然是一个未解决的问题(或者)它在某些 3.x 版本中已修复..?如果尚未修复,是否有解决方法来解决此问题..?

截至目前,我们正在注释所有 ValueErrors 以解决该问题,但不建议这样做,因为我们在 POST 调用期间失去了验证功能。

python-3.x swagger-codegen openapi-generator
2个回答
0
投票

python-nextgen
(最新的 Python 生成器)上它没有实现(您可以在创建
disabled_client_side_validations
对象时指示可以使用
configuration
跳过哪种类型的验证,也许适合您?)。

configuration
对象还包含一个属性
client_side_validation
,它似乎是用于此目的,但目前尚未实现。

目前唯一的选择是保留它或删除它以进行所有操作。


0
投票

我使用 OpenAPI Generator 7.1.0 创建 Python 代码。现在,对于每个 API 端点,都有 3 种不同的方法可用。让我们以端点方法 auth_login_post 为例。现在还有端点方法 auth_login_post_without_preload_content 和 auth_login_post_with_http_info。

概览示例:

  • auth_login_post
  • auth_login_post[_without_preload_content]
  • auth_login_post[_with_http_info]

auth_login_post 的响应主要包含经过验证的响应负载。 auth_login_post_with_http_info 的响应与 auth_login_post 几乎相同,但添加了 HTTP 信息,例如响应标头和响应状态。

但是,如果您不想验证响应 JSON,则可以采用 auth_login_post_without_preload_content。在这种情况下,响应的 JSON 有效负载未经验证,并以 Python 字节字符串的形式提供给您。

© www.soinside.com 2019 - 2024. All rights reserved.