向参数定义添加自定义属性的 Swagger



我们有一个基于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"];

相关内容

  • 没有找到相关文章

最新更新