我们有一个基于connexion和Flask库的python Web服务器应用程序。出于审计目的,我们将每个请求(包括请求正文)打印到日志中。这些日志比 Flask 默认打印的要广泛得多。
但是,有些参数(如密码或密钥)我不想将其值打印到日志中。
我想在 swagger.yml 中将自定义属性添加到多个参数的定义中,因此在 Web 应用程序启动时,我将从 connexion 获取参数定义并保存具有此自定义属性的所有参数,因此稍后我将在日志中隐藏这些参数的值。
我想要的定义:
paths:
/demo_add_user:
post:
summary: "add user"
operationId: api.api.demo_add_user
parameters:
- name: "new_user"
in: body
required: true
description: "Use to add"
schema:
$ref: "#/definitions/NewUser"
- name: "password"
in: body
description: "user password"
required: false
type: string
x-hidden: true
responses:
显然,我希望 connexion 忽略此属性,因为这特定于我们的实现。有什么方法可以将自定义属性(如x-hidden
)添加到参数定义中?
解决方案是通过添加类似 x-attr 的属性来使用 OpenApi 扩展。
详细信息在下一个链接中:https://swagger.io/specification/#specificationExtensions
只是扩展@D'artanian的答案:
例如,使用nodejs,它可能是:
斯瓦格:
/liveness:
get:
operationId: apiHealthLiveness
x-myCustomParam : "test"
summary: Liveliness test for service
description: deterimines if a service is still alive
responses:
"200":
...
并使用 req 对象,访问它:
const myCustomParamValue = req.swagger.operation["x-myCustomParam"];