【问题标题】:Is there a way to render only specific api endpoint in swagger-ui 3.*?有没有办法在 swagger-ui 3.* 中仅呈现特定的 api 端点?
【发布时间】:2019-05-16 06:42:25
【问题描述】:

我有一个 spring 4 项目,其中 springfox-swagger2 2.8.o 生成了 swagger 2 规范。为了使用这个规范,我在前端应用程序中使用了 swagger-ui 3.22.1。目前 swagger-ui 正在显示规范中的所有端点,我怎样才能在 swagger-ui 中只显示特定端点?有没有办法过滤特定路径的规范?或者我们可以动态获取 springfox-swagger2/swagger-ui 中特定路径/端点的规范吗?

我已尝试获取规范并在前端过滤该特定端点的 json。例如,仅从路径对象中提取“/my-endpoint”,并仅提取与“/my-endpoint”相关的标签,然后根据提取的路径和标签创建新的 json,它确实部分解决了问题,但模型对象有所有路径的模型,无论何时我必须显示特定端点的文档,我都必须从服务器获取整个规范。

const { paths, tags } = swagger2JsonData;

const { ['/my-endpoint']: path } = paths;
const specifiedEndpointData= { '/my-endpoint': { ...path } };

const specifiedEndpointTag= tags.filter(x => x.name === 'my-endpoint-controller-tag');

const newData = { ...swagger2JsonData, paths: specifiedEndpointData, tags: specifiedEndpointTag};

SwaggerUI({
  spec: newData,
  dom_id: '#swagger-ui-container',
  presets: [SwaggerUI.presets.apis]
});

【问题讨论】:

  • 你找到解决方案了吗?

标签: javascript java swagger-ui swagger-2.0 springfox


【解决方案1】:

一种选择是使用正则表达式过滤路径,您在其中配置了 Docket:

@Bean
public Docket petApi() {
    return new Docket(DocumentationType.SWAGGER_2)
        .select() 
        .apis(RequestHandlerSelectors.any()) 
        .paths(PathSelectors.regex("YOURREGEXHERE")) 
        .build()

更多信息在这里: https://springfox.github.io/springfox/docs/snapshot/#quick-start-guides

【讨论】:

  • 这将生成特定路径的规范,因为正则表达式是硬编码的,但我想动态生成特定路径的规范,无需硬编码,就像传递标签或 operationId 并只获取 json与该标签或 operationId 相关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 2010-12-01
相关资源
最近更新 更多