赞
踩
<!-- springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello";
}
}
看看能不能跳转
4. 开启SwaggerConfig
@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {
}
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo());
}
private ApiInfo apiInfo(){
//作者信息
Contact contact = new Contact("lqc", "http://lqc.com", "793628929@qq.com");
return new ApiInfo(
"lqc的SwaggerAPI文档",
"做好此时此刻",
"1.0",
"http://lqc.com",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList<VendorExtension>());
}
1.自定义扫描接口使用基于Docket.select
Required: springfox.documentation.spring.web.plugins.Docket public
Found: springfox.documentation.spring.web.plugins.ApiSelectorBuilder select()
由此可见,它需要一个build方法
但是build的什么呢,可见可以build apis和paths
此处使用Apis,它又告诉你它需要使用RequestHandlerSelectors【配置要扫描接口的方式】于是有了以下代码:
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//RequestHandlerSelectors 配置要扫描接口的方式
.apis(RequestHandlerSelectors.basePackage("com.kuang.swagger.controller"))
.build();
}
此处只允许扫描该接口
进入源码看发现除了basePackage指定扫描包还有很多方法
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//RequestHandlerSelectors 配置要扫描接口的方式
//basePackage:指定要扫描的包
//withClassAnnotation:扫描类上的注解
//withMethodAnnotation:扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.kuang.swagger.controller"))
//paths():过滤什么路径.
.paths(PathSelectors.ant("/kuang/**"))//只扫描这个路径下的接口
.build();
}
@Bean
public Docket docket(Environment environment){
//设置要显示的Swagger环境
Profiles profiles = Profiles.of("dev","test");
//通过environment.acceptsProfiles判断是否处在自己设定的环境中
boolean flag = environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(flag)//enable 是否启动Swagger,如果为false就启用不了,反之就可以}
配置API文档的分组
.groupName("小可爱")
如何配置多个分组,多个Docket实例即可
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2).groupName("A");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("B");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("C");
}
@ApiModel:类
@ApiModelProperty:属性
@ApiOperation:方法
@ApiParam:参数
示例:
实体类配置
//@Api(注释)
@ApiModel("用户实体类")
public class User {
@ApiModelProperty("用户名")
public String username;
@ApiModelProperty("密码")
public String password;
}
controller
//Operation接口,不是放在类上的,是方法
@ApiOperation("Hello控制类")
@GetMapping(value="/hello2")
public String hello2(@ApiParam("用户名") String username){
return "hello"+username;
}
controller
//只要在我们的接口中,返回值中存在实体类,他就会被扫描到Swagger中
@PostMapping(value = "/user")
public User user(){
return new User();
}
Swagger是一个优秀的工具,几乎所有大公司都有使用它
【注意点】在正式发布的时候,关闭Swagger! !!出于安全考虑。而且节省运行的内存;
–大部分内容来自狂神说JAVA
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。