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

时间:2017-10-24 13:32:42

标签: python flask swagger

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

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

我想在swagger.yml中为几个参数的定义添加自定义属性,所以在web app启动时我会从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等自定义属性添加到参数定义?

2 个答案:

答案 0 :(得分:2)

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

详情请见下一个链接: https://swagger.io/specification/#specificationExtensions

答案 1 :(得分: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"];