Swagger的使用和介绍
文章目录
- spring-boot集成swagger
- 配置swagger
- Swagger配置扫描接口
- swagger导出JSON文件
- 问题
- 使用@Profile({"dev", "test"})不生效
spring-boot集成swagger
需要的依赖
<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>
<!--开启账号密码需要此注解-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
开启账号密码需要的配置
swagger:
production: false
basic:
enable: true
username: 账号
password: 密码
配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
@Configuration
@EnableSwagger2 // 开启swagger
@EnableSwaggerBootstrapUI // 开启UI配置功能 ,如果设置需要账号密码登录才能访问则需要此注解
public class SwaggerConfig {
@Bean
public Docket docket(Environment environment){
// 设置要显示的swagger的环境
Profiles profiles = Profiles.of("dev");// 设置测试环境可访问
boolean flag = environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("分组名称")
.enable(flag) // 设置swagger是否可用
.select()
// 有基于包扫描的,有扫描所有的,和不扫描的,点进RequestHandlerSelectors即可看有几种情况
.apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
// 过滤的路径,只有满足这个路径下的才会被扫描,这个路径是在controller里面配置的路径
// 此处可以配置any方法,扫描所有路径
.paths(PathSelectors.ant("/controller/hello"))
.build(); // 配置swagger页面信息
}
// 配置swagger信息
private ApiInfo apiInfo(){
// 开发者信息
Contact DEFAULT_CONTACT = new Contact("开发者名字", "组织信息-可以是博客", "开发者邮箱");
return new ApiInfo(
"swagger大标题",
"swagger描述信息",
"1.0",
"urn:tos", DEFAULT_CONTACT,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
默认访问路径 :http://localhost:8080/swagger-ui.html
2.9.2版本是有实体类信息的,2.7.0是没有的
配置swagger
实体类
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel("用户实体类") // 注解的作用
public class User {
@ApiModelProperty("用户名")
private String userName;
@ApiModelProperty("密码")
private String password;
}
controller类
mport io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/controller")
public class HelloController {
@ApiOperation("hello的方法")
@RequestMapping("/hello")
public String hello(@ApiParam("参数的注解") String name) {
return "hello";
}
@RequestMapping("/hello2")
public String hello2() {
return "hello";
}
}
Swagger配置扫描接口
扫描的几种情况
swagger导出JSON文件
http://ip:port/项目路径/v2/api-docs
项目跟目录加上/v2/api-docs
,会返回swagger的JSON串,另存为json文件即可
问题
使用@Profile({“dev”, “test”})不生效
原因:@EnableSwagger2注解在启动类上使用了,也在swagger的配置类上使用了的原因,删掉一个即可,@Profile({“dev”, “test”})就会生效
CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)使用更多的站内链接;(2)提升标题与正文的相关性。
Kwan的解忧杂货铺@新空间代码工作室: 博主的文章真的太赞了!文章内容通俗易懂,大大提高了我对这个话题的理解。每次都能学到很多新知识,感谢博主的用心分享。期待更多精彩的内容!博主的干货文章一直都是我学习的首选,加油!
CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)使用更多的站内链接;(2)提升标题与正文的相关性。
林同学正在努力: 有帮到我
CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)提升标题与正文的相关性;(2)使用更多的站内链接。