代码拉取完成,页面将自动刷新
学习目标:
前后端分离
Vue+SpringBoot
后端时代:前端直用管理静态页面;HTML ==> 后端。模板引擎 JSP => 后端是主力
前后端分离时代:
产生一个问题:
解决方案:
官网: https://doc.xiaominfo.com/
https://doc.xiaominfo.com/knife4j/springboot.html#maven%E5%BC%95%E7%94%A8
1、新建一个Spring-Web项目
2、导入依赖
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<!--在引用时请在maven中央仓库搜索最新版本号-->
<version>2.0.2</version>
</dependency>
<!-- 但是有的时候会报错 Caused by: java.lang.ClassNotFoundException: javax.validation.constraints.Min 需要添加以下依赖 -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
3、编写一个Hello工程
4、配置Swagger => Config
Knife4j的bean实例Docket
@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfig {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//分组名称
.groupName("2.X版本")
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("cn.icanci.knife4j.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
@Bean
public ApiInfo apiInfo() {
Contact contact = new Contact("icanci", "https://icanci.oschina.io/", "icanci@foxmail.com");
return new ApiInfo(
"JUST-Admin-Web-API",
"Just Do It",
"v1.0",
"https://icanci.oschina.io/",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList<VendorExtension>());
}
}
5、启动项目就可以看到文档 测试
文档地址: http://localhost:8080/doc.html
Docket.select();
@Configuration
@EnableSwagger2
public class SwaggerConfig {
//配置Swagger的bean实例
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 配置 要扫描接口的方式:RequestHandlerSelectors
// 配置 需要扫描的包:basePackage
// 扫描全部 : any()
// 扫描类上的注解:withClassAnnotation() 注解的反射对象
// 扫描方法上的注解:withMethodAnnotation
.apis(RequestHandlerSelectors.basePackage("cn.icanci.swagger.controller"))
// 过滤路径:paths()
.paths(PathSelectors.ant("/icanci/**"))
.build();
}
//配置Swagger信息 = apiInfo
@Bean
public ApiInfo apiInfo() {
Contact contact = new Contact("icanci", "https://icanci.oschina.io/", "icanci@foxmail.com");
return new ApiInfo(
"JUST-Admin-Web-API",
"Just Do It",
"v1.0",
"https://icanci.oschina.io/",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList<VendorExtension>());
}
}
@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfig {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//分组名称
.groupName("2.X版本")
//配置是否使用Knife4j
.enable(false)
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("cn.icanci.knife4j.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
}
我只希望我的Swagger在成产环境使用,在发布的时候不用?
@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfig {
@Bean(value = "defaultApi2")
public Docket defaultApi2(Environment environment) {
//设置需要显示的Knife4j环境
Profiles profiles = Profiles.of("dev");
boolean flag = environment.acceptsProfiles(profiles);
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//分组名称
.groupName("2.X版本")
.enable(flag)
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("cn.icanci.knife4j.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
@Bean
public ApiInfo apiInfo() {
Contact contact = new Contact("icanci", "https://icanci.oschina.io/", "icanci@foxmail.com");
return new ApiInfo(
"JUST-Admin-Web-API",
"Just Do It",
"v1.0",
"https://icanci.oschina.io/",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList<VendorExtension>());
}
}
只要ModelAndView返回实体类对象即可生成映射
@ApiModel("用户实体类")
@Component
public class User {
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("用户密码")
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
}
@RestController
public class HelloController {
@GetMapping(value = "/hello")
public String hello() {
return "helli knife4j";
}
//只要我们的接口中存在实体类就有
@GetMapping(value = "/user")
public User user() {
return new User("hello", "pwe");
}
@ApiOperation("hello2控制器")
@GetMapping(value = "/hello2")
public String hello2(@ApiParam("用户名") String username) {
return "hello" + username;
}
}
1、修改配置文件 添加以下内容
knife4j.markdowns=classpath:markdown/*
然后在Swagger的配置文件中启用 @EnableKnife4j
注解
@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfig {
}
然后自定义的文档,就可以显示在页面 可配置多个
1、我们可以实现通过Knife4j给一些比较难以理解的属性或者接口,增加注释信息
2、接口文档试试更新
3、可以在线测试
4、Knife4j拓展了很多其他的功能,很nice,值得一试
Knife4j是一个优秀的工具
注意点:在正式项目上线的时候,关闭Knife4j!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。