Springboot2.3.5整合Swagger3.0以及访问swagger首页404的问题
程序员文章站
2022-05-03 10:24:41
...
1.导入Swagger对应的pom.xml文件:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
aaa@qq.com
Swagger3.0的注解改为@EnableOpenApi,可以自定义SwaggerConfig类,也可以直接加在Springboot启动类上,如果选择SwaggerConfig不要忘记加上@Configuration类,否则不生效。
@EnableOpenApi
@Configuration
public class SwaggerConfig{
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.**.**"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("API端接口文档")
//.description("更多请咨询服务开发者XXX")
//.contact(new Contact("meritco", "北京", ""))
.version("1.0")
.build();
}
}
3.控制器注解
在控制器上加上如**解:
@Api(tags={"用户操作接口"})
@RestController()
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String hello(@RequestParam(value = "name") String name) {
return String.format("Hello %s!", name);
}
}
4.效果
如果在springboot启动类上加@EnableOpenApi注解,不做任何配置,访问http://10.153.88.238:8085/swagger-ui/index.html
会出现如下界面:
5.访问swagger-ui/index.html报404
如果在上一步中访问报404,可通过配置静态资源访问路径来解决,资源访问路径取决于springfox-swagger-ui-3.0.0.jar
中index.html
的位置,下图中红方框路径组合为swagger-ui的访问路径。
classpath的配置如下:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.
addResourceHandler("/swagger-ui/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
.resourceChain(false);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/swagger-ui/")
.setViewName("forward:/swagger-ui/index.html");
}
}
配置后成功访问。