4

我们有一个基于 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到参数定义中?

4

2 回答 2

4

解决方案是通过添加类似 x-attr 的属性来使用 OpenApi 扩展。

详细信息在下一个链接中: https ://swagger.io/specification/#specificationExtensions

于 2017-11-06T13:43:07.347 回答
0

只是扩展@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"];
于 2020-07-08T17:21:11.100 回答