SpringBoot使用Swagger3出现Unable to infer base url.This is common when using dynamic servlet
在使用`SpringBoot`中配置`Swagger3`的时候,出现Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway. The base url is the root of where all the s
在使用SpringBoot
中配置Swagger3
的时候,出现
Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway. The base url is the root of where all the swagger resources are served. For e.g. if the api is available at http://example.org/api/v2/api-docs then the base url is http://example.org/api/. Please enter the location manually:
通过排查发现,出现这个问题原因是项目中通过Spring
的RestControllerAdvice
对接口返回的数据做了全局统一的拦截处理,添加了code
、data
等信息,当打开swagger
地址http://localhost:8080/swagger-ui/index.html
的时候,swagger
接口中返回的的数据也被做了处理,导致swagger
接口返回的数据格式和期望的不一致,所以报错。
可以通过在RestControllerAdvice
的注解上制接口的扫描包来修复。
@RestControllerAdvice(basePackages = "com.hy.brush.lesson.admin.controller")
可以通过访问swagger
的接口来看一下返回数据的格式 http://localhost:8080/v3/api-docs
如果是 swagger2 可以通过 http://localhost:8080/v2/api-docs 来查看。
正常的格式应该是这样的
{
"openapi": "3.0.3",
"info": {
"title": "Api Documentation",
"description": "Api Documentation",
"termsOfService": "urn:tos",
"contact": {},
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0"
},
"version": "1.0"
},
"servers": [
{
"url": "http://localhost:8080",
"description": "Inferred Url"
}
],
"tags": [...]
...
}
更多推荐
所有评论(0)