我们有一个基于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
等自定义属性添加到参数定义?
答案 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"];