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