我正在使用 swagger 来执行 docs api 并收到错误 无法推断基本 url ,我在 stackoverflow 上尝试了一些以前的解决方案,但不起作用,有人帮助我。 我用的是swagger 2.7.0
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
Swagger配置:
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket apiDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.javaspring.blogapi"))
.paths(PathSelectors.any())
.build();
}
}
安全配置:
http.authorizeHttpRequests(auth ->
Auth
.requestMatchers("/api/v1/auth/**",
"/v2/api-docs",
"/v3/api-docs",
"/v3/api-docs/**",
"/swagger-resources",
"/swagger-resources/**",
"/configuration/ui",
"/configuration/security",
"/swagger-ui/**",
"/webjars/**",
"/swagger-ui.html").permitAll()
控制器之一:
@RestController
@RequestMapping(path = "/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{username}")
public ResponseEntity<UserDTO> getUser(@PathVariable String username){
return ResponseEntity.ok().body(userService.findByUsername(username));
}
我尝试在输入中输入http://localhost:8080/,当它说无法推断基本网址时,但它没有解决问题。
具体通知: 无法推断基本 URL。当使用动态 Servlet 注册或 API 位于 API 网关后面时,这种情况很常见。基本 url 是提供所有 swagger 资源的根。例如如果 api 在 http://example.org/api/v2/api-docs 可用,则基本 URL 为 http://example.org/api/。请手动输入位置:
在 swagger 配置中的 build() 之后添加
.pathMapping("/")
。
并在 application.properties 中添加此属性:
spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER
检查这些 springfox-demos 并查看什么配置适合您的构建。 您还可以查看docs以获取更多信息。