项目集成swagger
文章目录
前言
项目集成swagger这个没啥好整的,maven项目就在pom文件导入依赖,servlet项目就在lib目录下导入jar包,这些过程略。
一、背景
我这里是springboot+maven,swagger集成之后,项目启动,访问地址 ip:端口/项目路径/doc.html
例如自己电脑启动项目之后访问路径为
http://127.0.0.1:9001/doc.html
这个访问路径是未设置项目路径的,
项目路径介绍:
Context path of the application. 应用的上下文路径,也可以称为项目路径,是构成url地址的一部分。
springboot关于项目路径的配置:
1、springboot 2.0之前,配置为 server.context-path=/cattle-agent
2、springboot 2.0之后,配置为 server.servlet.context-path=/cattle-agent
二、问题复现
1.Full authentication is required to access this resource
在接入swagger之后,访问页面,会报错,错误提示 访问此资源需要身份验证,因为swagger这个不需要身份验证,处理方法:新建一个config类,这里使用的是swagger-ui,如果需要增强版本或者其他版本的swagger-ui样式,去百度搜。
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.resource.ContentVersionStrategy;
import org.springframework.web.servlet.resource.VersionResourceResolver;
@Configuration
@Slf4j
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
VersionResourceResolver versionResourceResolver = new VersionResourceResolver()
.addVersionStrategy(new ContentVersionStrategy(), "/**");
// 配置静态文件访问路径
// registry
// .addResourceHandler("/**")
// .addResourceLocations("classpath:/static/")
// .setCachePeriod(2592000)
// .resourceChain(true)
// .addResolver(versionResourceResolver);
// 解决swagger无法访问
registry
.addResourceHandler("/swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
// 解决swagger的js文件无法访问
registry
.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
registry
.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
}
}
2.Illegal DefaultValue null for parameter type integer
加入上述配置之后,启动项目,访问页面,可以显示出接口文档了,但是在控制台会出现这个问题 Illegal DefaultValue null for parameter type integer
解决办法:
pom文件增加如下依赖
<!-- 解决 Illegal DefaultValue null for parameter type integer 异常 -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.21</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.21</version>
</dependency>
总结
刷新maven,启动项目,swagger正常访问,控制台无报错!