目录
1.问题:我只希望我的Swagger在生产环境中使用,在发布的时候不适用?
1.Swagger产生的背景
前后端分离的流行(Vue+SpringBoot )我们在对接前后端的时候,都需要提供相应的接口文档。对于后端来说,编写接口文档即费时费力,还会经常因为没有及时更新,导致前端对接时出现实际接口与文档不一致。而且手写接口文档还容易出错,而swagger很好的解决了这个痛点。
2.Swagger的简介
3.SpringBoot集成Swagger的使用
1.Swagger需要springbox;
-
Swagger2
-
ui
2.导入相关依赖
-
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
-
<dependency>
-
<groupId>io.springfox
</groupId>
-
<artifactId>springfox-swagger2
</artifactId>
-
<version>2.9.2
</version>
-
</dependency>
-
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
-
<dependency>
-
<groupId>io.springfox
</groupId>
-
<artifactId>springfox-swagger-ui
</artifactId>
-
<version>2.9.2
</version>
-
</dependency>
3.编写一个hello world
-
@RestController
-
public
class
HelloController {
-
@GetMapping("/hello")
-
public String
hello
() {
-
return
"hello world";
-
-
}
4.配置Swagger=>Config类
-
@Configuration
-
@EnableSwagger2
//开启Swagger
-
public
class
SwaggerConfig {
-
-
}
5.访问Swagger页面
http://localhost:8080/swagger-ui.html
6.自定义Swagger界面
-
@Configuration
-
@EnableSwagger2
//开启Swagger
-
public
class
SwaggerConfig {
-
return
new
Docket(DocumentationType.SWAGGER_2)
-
.apiInfo(apiInfo())
-
.groupName(
"朱笑笑")
-
.enable(
true)
-
.select()
-
.apis(RequestHandlerSelectors.basePackage(
"com.kuang.swagger.controller"))
-
.build()
-
;
-
}
-
-
// 配置Swagger基本信息,有用的话,也就是题目和标题罢了
-
private ApiInfo
apiInfo
(){
-
Contact
contact
=
new
Contact(
"笑笑",
"http://baidu.com/",
"2844509367@qq.com");
-
return
new
ApiInfo(
-
"朱笑笑的Swagger文档",
-
"天边的天边",
-
"v1.0",
-
"http://baidu.com/",
-
contact,
-
"Apache 2.0",
-
"http://www.apache.org/licenses/LICENSE-2.0",
-
new
ArrayList());
-
}
4.Swagger的常见的问题如何解决?
1.问题:我只希望我的Swagger在生产环境中使用,在发布的时候不适用?
-
判断环境是否为测试环境,如果为测试环境则返回trun,否则为
false
-
Profiles
profiles
= Profiles.of(
"dev",
"text");
-
boolean
flag
= environment.acceptsProfiles(profiles);
-
-
-
获得
boolean类型的flag之后再传入Docket的enable中即可
2.问题:如果有几个人同时开发写方法,我们如何进行分组呢?
-
创建多个的Dcoket,并对groupName进行命名即可
-
@Bean
-
public Docket
docket1
() {
-
return
new
Docket(DocumentationType.SWAGGER_2)
-
.apiInfo(apiInfo())
-
.groupName(
"赵层")
-
;
-
}
-
@Bean
-
public Docket
docket2
() {
-
return
new
Docket(DocumentationType.SWAGGER_2)
-
.groupName(
"成求")
-
;
-
}
-
@Bean
-
public Docket
docket3
() {
-
return
new
Docket(DocumentationType.SWAGGER_2)
-
.groupName(
"彬彬")
-
;
-
}
5.对一些属性进行添加注解信息
1.实体的api注释
-
-
@ApiModel("用户实体类")
-
public
class
User {
-
@ApiModelProperty("用户名")
-
private String username;
-
@ApiModelProperty("密码")
-
private String password;
-
}
2. 控制层界面api
-
@Api("Hello控制类")
-
@RestController
-
public
class
HelloController {
-
-
-
}
3.控制层中控制类以及参数的api
-
@ApiOperation("User控制类")
-
@PostMapping("/user")
-
参数的api
-
public User
user
(@ApiParam("用户名")String username) {
-
return
new
User();
-
}
6.在Swagger的页面进行测试
然后会显示相应的请求正确与错误,这样更有利于检查
总结:
- 我们可以通过Swagger给一些比较难理解的属性或者接口,添加注释信息
- 接口文档可实时更新
- 可以在线测试
- 可用了解可不了解,不是很紧要
转载:https://blog.csdn.net/qq2844509367/article/details/127465700
查看评论