我对Swagger不是很熟悉,最近开始使用Spring Boot构建Web服务的文档。
问题在于,在我配置Swagger之后,当我在浏览器中键入localhost:8080/swagger-ui.html时,我得到了以下带有一些奇怪弹出消息的屏幕,上面写着“无法推断基本URL。当使用动态servlet注册或API位于API网关后面时,这是常见的。”
我知道这可能是重复的问题,但我根本无法通过所有给出的答案解决它。接下来,我发布了截图和完整代码,我不知道哪里出了问题,请帮忙理解。
代码
SwaggerConfig.java
package com.test.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import static springfox.documentation.builders.PathSelectors.regex;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket productApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.paths(regex("/greet.*"))
.build();
}
}
TestApplication.java
package com.test.config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages="com.test.controllers")
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
TestController.java
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/greet")
public class TestController {
@RequestMapping
public String getGreeting() {
return "Hello There";
}
}
在上面的代码中,SwaggerConfig.java 和 TestApplication.java 都属于同一个包,即 com.test.config,而 TestController.java 属于 com.test.controllers。
这是我所有的代码,在 pom.xml 中有以下两个依赖项。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
<scope>compile</scope>
</dependency>