Я пытаюсь добавить поддержку Swagger в свой REST API, но не понимаю, как добавить файлы статического содержимого (HTML, JS), связанные с Swagger, в мое приложение Spring Boot.
Я использую следующие зависимости:
spring-boot-starter-parent:2.0.1.RELEASEspring-boot-starter-jersey:2.0.1.RELEASEswagger-jersey2-jaxrs:1.5.18Это моя конфигурация чванства:
@Configuration
public class SwaggerConfig {
@Bean
public BeanConfig swaggerConfiguration() {
final BeanConfig beanConfig = new BeanConfig();
beanConfig.setResourcePackage("a.b.c");
beanConfig.setScan(true);
beanConfig.setPrettyPrint(true);
return beanConfig;
}
}
И конфигурация трикотажа:
@Component
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(ImageResource.class);
register(io.swagger.jaxrs.listing.ApiListingResource.class);
register(io.swagger.jaxrs.listing.SwaggerSerializers.class);
}
}
Эта часть работает как шарм: когда я открываю http: // локальный: 8090 / swagger.json, я вижу ожидаемый контент Swagger JSON.
Но я не знаю, как добавить статический HTML-контент, связанный с Swagger, в мое приложение. Я вижу, что это содержимое находится в springfox-swagger-ui.jar, и я могу добавить его в свой проект как зависимость от maven, но как я могу распаковать содержимое из этой банки?
И каков правильный способ перезаписать URL-адрес swagger.json по умолчанию моим URL-адресом в статическом файле Swagger, чтобы Swagger сразу отображал мой REST API, когда я открываю swagger-ui.html.




<dependency>
<groupId>org.webjars</groupId>
<artifactId>swagger-ui</artifactId>
<version>${swagger-ui.version}</version>
</dependency>
Пожалуйста, не включайте springfox-swagger-ui.jar, он предназначен для работы с Spring от RestController.
Вы можете улучшить доступность, определив свой собственный фильтр сервлетов, который перенаправляет /swagger-ui.html и / swagger-ui на что-то вроде webjars/swagger-ui/VERSION/index.html?url=/yourBasePath/swagger.json - url-Query-Param дополнительно настроит swagger-ui для инициализации с вашим URL-адресом спецификации api вместо стандартного petstore.
Вы, должно быть, решили это сейчас, но это может помочь другим, поэтому вот полная процедура, так как я также искал учебное пособие.
Я использую Swagger V2 с Spring Boot 2, и это простой трехэтапный процесс.
Шаг 1: Добавьте необходимые зависимости в файл pom.xml. Вторая зависимость необязательна, используйте ее, только если вам нужен Swagger UI.
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
Шаг 2: Добавить класс конфигурации
@Configuration
@EnableSwagger2
public class SwaggerConfig {
public static final Contact DEFAULT_CONTACT = new Contact("Usama Amjad", "https://stackoverflow.com/users/4704510/usamaamjad", "[email protected]");
public static final ApiInfo DEFAULT_API_INFO = new ApiInfo("Article API", "Article API documentation sample", "1.0", "urn:tos",
DEFAULT_CONTACT, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList<VendorExtension>());
@Bean
public Docket api() {
Set<String> producesAndConsumes = new HashSet<>();
producesAndConsumes.add("application/json");
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(DEFAULT_API_INFO)
.produces(producesAndConsumes)
.consumes(producesAndConsumes);
}
}
Шаг 3: Настройка завершена, и теперь вам нужно задокументировать API в controllers.
@ApiOperation(value = "Returns a list Articles for a given Author", response = Article.class, responseContainer = "List")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Success"),
@ApiResponse(code = 404, message = "The resource you were trying to reach is not found") })
@GetMapping(path = "/articles/users/{userId}")
public List<Article> getArticlesByUser() {
// Do your code
}
Применение:
Пользовательский интерфейс Swagger: Вы можете получить к нему доступ через http://localhost:8080/swagger-ui.html
Почтальон: Вы также можете получить доступ к своей документации JSON из http://localhost:8080/v2/api-docs и просто скопировать и вставить ее в Postman, чтобы использовать с ней.
Это не решение для Джерси.
Это полный URL-адрес swagger-ui: локальный: 8080 / myapp / webjars / swagger-ui / 3.13.3 / index.html. Короткий URL (локальный: 8080 / myapp / webjars / swagger-ui / index.html) не работает. Отчет об ошибке: github.com/spring-projects/spring-boot/issues/11355