Swagger 将自定义属性添加到参数定义

Swagger adding custom attributes to parameter definition

我们有一个基于 connexion 和 Flask 库的 python 网络服务器应用程序。 出于审计目的,我们将每个请求(包括请求正文)打印到日志中。这些日志比 Flask 默认打印的内容要广泛得多。

但是,有些参数(例如密码或密钥)我不想将它们的值打印到日志中。

我想将自定义属性添加到 swagger.yml 中的几个参数定义中,因此在网络应用程序启动时,我将从 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 扩展。

详情在下link: 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"];