Есть ли способ отобразить только определенную конечную точку API в Swagger-UI 3. *? - PullRequest
2 голосов
/ 16 мая 2019

У меня есть проект spring 4 с springfox-swagger2 2.8.o, создающий спецификацию swagger 2.Чтобы использовать эту спецификацию, я использую swagger-ui 3.22.1 в приложении Front-end.В настоящее время Swagger-UI показывает все конечные точки в спецификации, как я могу показать только конкретную конечную точку в Swagger-UI?Есть ли способ отфильтровать спецификации для конкретного пути?или мы можем динамически получить спецификацию только для конкретного пути / конечной точки в springfox-swagger2 / swagger-ui?

Я попытался получить спецификацию и отфильтровать json-интерфейс для этой конкретной конечной точки.Например, извлеките только '/ my-endpoint' из объекта paths и извлеките только тег, связанный с '/ 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]
});

1 Ответ

0 голосов
/ 16 мая 2019

Один из вариантов будет фильтровать пути с помощью регулярного выражения , где вы настроили свой 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

...