有没有办法在 swagger-ui 3.* 中仅渲染特定的 api 端点?

m_g*_*een 5 javascript java swagger-ui swagger-2.0 springfox

我有一个 springfox-swagger2 2.8.o 的 spring 4 项目,生成 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]
});
Run Code Online (Sandbox Code Playgroud)

Ioa*_*n M 1

一种选择是使用您配置 Docket 的正则表达式来过滤路径:

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

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