如何在 Swagger UI 中以编程方式设置字段值

问题描述 投票:0回答:1

我正在使用 Rswag 和 Swagger UI,并且我的表单上有两个输入,我想从服务器端数据动态加载,称为

date_range_start
date_range_end
。 我想要设置的值基于当前日期和用户的时区,因此我不想将它们直接作为 openapi 规范中的示例,而是在服务器端获取它们并在加载时更新表单。

我有与此处提出的问题相同。 我重新提出这个问题是因为我认为那里讨论的方法可能不是执行此操作的正确方法。 他们采用的方法似乎很 hacky,直接操作 DOM,而不是使用 Swagger UI 函数。 SwaggerUI 中有没有办法在加载时设置字段?

我可能会把它放在你看到评论的地方:

configObject.onComplete = {
  // set specific form input values based on fetch
}
const ui = SwaggerUIBundle(configObject);

我不需要其中

fetch
部分的帮助,只是想了解如何在 swagger ui 中以编程方式设置参数表单值。

swagger-ui rswag
1个回答
0
投票

Swagger UI 具有

parameterMacro
配置,可让您动态设置操作参数的示例值。
parameterMacro
是一个接受两个参数(操作对象和参数对象)的函数,并返回输入操作和参数的示例值。在该函数中,您可以检查操作的
operationId
和参数的
name
以仅针对特定参数。

这是在独立 Swagger UI 中使用

parameterMacro
的示例:

  // swagger-initializer.js

  window.ui = SwaggerUIBundle({
    url: "https://petstore3.swagger.io/api/v3/openapi.json",
    dom_id: '#swagger-ui',
    ...

    parameterMacro: function (operation, parameter) {
      if (operation.operationId === "getPetById" && parameter.name === "petId") {
        return 12345;
      }
    }
  });

由于您使用的是 Rswag 而不是独立的 Swagger UI,请检查是否公开

parameterMacro
配置或提供自定义
SwaggerUIBundle
初始化代码的方法。

© www.soinside.com 2019 - 2024. All rights reserved.