flask_swagger_ui:“隐藏”参数属性被忽略

时间:2021-05-07 19:57:57

标签: parameters swagger swagger-ui hidden flask-restplus

我们将 python flask_swagger_ui 模块与 flask_restplus 一起使用,以便在 swagger.json 中提供一些静态招摇。

有些参数必须传递给某些端点,但我们希望强制这些为标准值,并且不允许 swagger UI 的用户甚至看到这些参数,尽管我们希望这些不可见的参数仍然被传递当“尝试”被调用时到端点。我已经看到对“隐藏”属性的引用,该属性应该启用此参数隐藏功能,但它似乎不适用于 flask_swagger_ui

以下 swagger JSON 规范的“路径”片段说明了我们的问题。我们希望 visible_param 参数显示在 Swagger UI 中,以便用户输入值。但是,我们不希望 hidden_param 参数显示给用户,我们总是希望在调用“Try it”时将其传递给值为“xyz”的端点。但是,当我们尝试这样做时,hidden_param 始终显示给用户。

"paths": {
  "/sample/endpoint": {
    "post": {
      "operationId": "test",
      "description": "Test",
      "parameters": [
        {
          "in": "query",
          "name": "visible_param",
          "description": "Visible parameter",
          "schema": {
            "type": "string"
          }
        },
        {
          "in": "query",
          "name": "hidden_param",
          "description": "Hidden parameter",
          "hidden": true,
          "schema": {
            "type": "string",
            "default": "xyz"
          }
        }
      ]
    },
   ... other stuff goes here ...
  }
}

有什么办法可以让 hidden_param 不被用户看到?如果这不能通过 Swagger 规范在语法上处理,是否有办法拦截在调用“Try it”时传递给端点的参数?如果是这样,我们就可以将 hidden_param=xyz 填充到传递给端点的参数中。

或者有其他方法可以实现吗?

提前致谢。

编辑:我将代码示例更改为 openapi 3.0.3 格式。我之前以 swagger 2.0 格式对其进行编码。 “隐藏”属性在 openapi 3.0.3 中仍然不起作用。

0 个答案:

没有答案