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 tipoWebMvcConfigurerAdapter
, 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();
}
}