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

时间:2019-05-16 06:42:26

标签: 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,它确实部分解决了问题,但是models对象具有所有路径的模型,每当我必须显示特定端点的文档时,也必须从服务器获取整个规格。

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]
});

1 个答案:

答案 0 :(得分:0)

一种选择是使用正则表达式过滤路径,您在其中配置了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