spec guru example enableswagger2 apiparam spring-boot swagger swagger-ui

spring-boot - guru - swagger example java



No se puede obtener la interfaz de usuario Swagger trabajando con Spring boot (5)

Tengo el mismo problema, pero este enlace funciona para mí: http: // localhost: 8080 / sdoc.jsp

Rellena previamente la url de recursos de swagger ui con: http: // localhost: 8080 $ {pageContext.request.contextPath} / api-docs

y cuando lo edito manualmente, quitando $ {pageContext.request.contextPath} y presiono Explorar, me muestra mi API y puedo probar mis puntos finales con éxito. Así que definitivamente es un problema, pero probablemente no recoja $ {pageContext.request / contextPath}.

En cuanto a la fuente, el javascript tiene: url: window.location.origin + "$ {pageContext.request.contextPath} / api-docs"

en una swagger estática ui html tengo esta pieza está codificada como:

discoveryUrl: "./ resource-list.json"

Espero que esto sea un poco útil

Estoy intentando que Swagger UI funcione con Spring Boot 1.2.1. Seguí las instrucciones en https://github.com/martypitt/swagger-springmvc y agregué @EnableSwagger en mi configuración de primavera.

Actualmente recibo JSON cuando voy a http://localhost:8080/api-docs pero no tengo un buen HTML.

Estoy usando Maven y agregué la dependencia de swagger-ui:

<dependency> <groupId>org.ajar</groupId> <artifactId>swagger-spring-mvc-ui</artifactId> <version>0.4</version> </dependency>

Esta es mi lista completa de dependencias:

<dependencies> <dependency> <groupId>com.mangofactory</groupId> <artifactId>swagger-springmvc</artifactId> <version>0.9.4</version> </dependency> <dependency> <groupId>org.ajar</groupId> <artifactId>swagger-spring-mvc-ui</artifactId> <version>0.4</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>

También probé http://localhost:8080/docs/index.html como URL, pero eso solo da la "Página de error de Whitelabel"

Actualizar:

Creé un proyecto de prueba en Github para mostrar el problema: https://github.com/wimdeblauwe/springboot-swagger-test


Tengo swagger-ui v0.4 (con spring v4.14 y swagger-springmvc v0.9.4) funcionando bien, aunque tuve algunos problemas similares al principio. Parece que esta clase hace el truco.

@Configuration @EnableSwagger public class SwaggerConfig extends WebMvcConfigurerAdapter { @Autowired private SpringSwaggerConfig springSwaggerConfig; @Bean public SwaggerSpringMvcPlugin customImplementation() { return new SwaggerSpringMvcPlugin(springSwaggerConfig).apiInfo( apiInfo()); } private ApiInfo apiInfo() { return new ApiInfo(/* strings */); } @Override public void configureDefaultServletHandling( DefaultServletHandlerConfigurer configurer) { configurer.enable(); } }

Creo que lo relevante es que se haya reemplazado configureDefaultServletHandling . Y en mi principal WebApplicationInitializer , tengo:

@Import(SwaggerConfig.class)

Finalmente, solucioné el problema con el cuadro de ubicación de la interfaz de usuario que muestra " http: // localhost: 8080 $ {pageContext.request.contextPath} / api-docs" al incluir esto en mis dependencias:

<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <!--<version>8.0.15</version>--> <scope>provided</scope> </dependency>

Eso proporciona algo relacionado con el procesamiento de JSP. Está incluido en las dependencias de spring-boot , pero normalmente no se provided .

Espero que ayude.


Su problema radica en su archivo SwaggerConfiguration . @EnableWebMvc eliminar @EnableWebMvc , ya que esto hace que la resolución de vista predeterminada de Spring Boot se sobrescriba mediante el valor predeterminado ''SpringWebMvc'', que sirve el contenido estático de forma diferente.

Por defecto, Spring Boot servirá contenido estático desde cualquiera de los siguientes directorios:

  • / META-INF / recursos /
  • / recursos /
  • /estático/
  • /público/

incluyendo webjars.

Tuve el mismo problema y encontré esto en la documentación: http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-features -spring-mvc-auto-configuration

Si desea tomar el control completo de Spring MVC, puede agregar su propia @Configuration anotada con @EnableWebMvc . Si desea mantener las características de Spring Boot MVC, y solo desea agregar una configuración MVC adicional (interceptores, formateadores, controladores de vista, etc.) puede agregar su propia @Bean de tipo WebMvcConfigurerAdapter , pero sin @EnableWebMvc .

Espero que esto ayude.


Le sugiero que use la etiqueta @ EnableSwagger2 y siga los pasos y el código desde aquí: https://github.com/sanketsw/SpringBoot_REST_API

También estoy usando la siguiente dependencia que funciona perfectamente bien:

<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.2.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.2.2</version> <scope>compile</scope> </dependency>


He hecho configuraciones separadas para Swagger y mi problema fue que sin @EnableAutoConfiguration no funcionaba correctamente.

@Configuration @EnableSwagger2 @EnableAutoConfiguration public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); } }