不用说,我知道有很多关于这个问题的问题,但我已经被困在试图修复这个问题两天了,而且我读到的大部分内容都已经过时了。
所以是的..。这就是我现在拥有的:
格莱德尔:
dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-hystrix'
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-starter-actuator'
compile 'org.springframework.boot:spring-boot-starter-security'
compile 'org.springframework.ws:spring-ws-core'
compile 'io.springfox:springfox-swagger2:2.4.0'
compile 'io.springfox:springfox-swagger-ui:2.4.0'
}主修班:
@EnableSwagger2
public class Application {
public static void main(String[] args) {
SpringApplication.run(FeedServiceApplication.class, args);
}
@Bean
public Docket swaggerSettings() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.pathMapping("/");
}当我访问:http://localhost:8080/v2/api-docs时,我可以很好地获得json文档。另外,当我从github下载swagger,将源代码设置为上面的链接并在桌面上运行时,它也可以正常工作。不起作用的是把这两件事放在一起(让它在http://localhost:8080/swagger-ui.html上工作)。
有许多这样的教程,他们声称上面的内容将使swagger-ui工作:
http://kubecloud.io/guide-using-swagger-for-documenting-your-spring-boot-rest-api/
http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api
还有大量其他教程,它们指示您从swagger git中添加dist文件夹到您的项目中。
也是这样的映射:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("**/swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("**/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}也失败,对于当前线程,抛出作用域“请求”不活动;异常。
在尝试了youtube上的一些教程之后,我所看到的就是“没有找到页面”。如果有人能解释我错过了什么,我会非常感激的。
TL:博士,我怎么才能让swagger-ui.html工作呢?
编辑:找到解决方案。
如果其他人遇到这种情况,问题是,如果您有一个接受参数@RequestMapping("/{param}")的请求映射,那么dispatcherServlet就不再将/**映射到ResourceHttpRequestHandler。下面的代码解决了这个问题。
@Configuration
@EnableAutoConfiguration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurerAdapter{
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()).build();
}
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}发布于 2016-11-25 10:02:10
这就是我们用来设置的。使用@Configuration注释的类。
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(Predicates.not(PathSelectors.regex("/error")))
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfo(
"APP NAME",
"APP DESCRIPTION",
"1.0",
null,
new Contact("Firstname Lastname", null, "firstname.lastname@somewhere.net"),
null,
null);}}
发布于 2016-11-25 10:04:31
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spi</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-core</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-spring-web -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-web</artifactId>
<version>${swagger.version}</version>
</dependency>将上面的依赖项转换为gradle。我使用的版本是2.3.1
package XXXX;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2
public class SwaggerConfiguration {
}如前所述,我们启用了Swagger。
您可以为自定义头添加目录bean:
@Bean
public Docket docket() {
Parameter parameterAuthorization =
new ParameterBuilder().name("Authorization").description("Authentication of the API User")
.modelRef(new ModelRef("string")).parameterType("header").required(true).build();
Parameter parameterClientUserId =
new ParameterBuilder().name("user_id").description("Client user identifier")
.modelRef(new ModelRef("string")).parameterType("header").required(true).build();
return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()).build()
.globalOperationParameters(Lists.newArrayList(parameterClientUserId, parameterAuthorization));
}最后,在Spring上导入主应用程序类中的Swagger配置
@Import({SwaggerConfiguration.class})
https://stackoverflow.com/questions/40802015
复制相似问题