什么是swagger?
自己号称为世界上最流行的Api框架
ReatFul Api 文档在线生成工具=》 Api 文档与Api 定义同步更新
直接运行,可以在线测试Api 接口
支持多种语言
官网
https://swagger.io/
如何在项目中使用 Swagger
导入依赖
<!--swagger 依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
先键一个Spring boot 的项目
简单的hello 程序
package com.jj.demo.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello,swagger!";
}
}
配置Swagger 的配置文件
先简单的配置一下就可以访问到 swagger 的页面了
package com.jj.demo.config;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
//加入Swagger 的注解 ,开启
@EnableSwagger2
public class Swaggerconfig {
}
访问http://localhost:8080/swagger-ui.html
如何修改成自己的名字
package com.jj.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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
//加入Swagger 的注解 ,开启
@EnableSwagger2
public class Swaggerconfig {
// 配置Swagger 的 Docket 的bean 实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
}
// 配置Swagger 信息
private ApiInfo apiInfo(){
// 作者信息
Contact contact = new Contact("娇娇", "", "1782579163@qq.com");
return new ApiInfo(
"娇娇的Api 文档","生而为人,务必善良","1.0","",contact,"","",new ArrayList<>()
);
}
}
效果
**配饰Swagger 扫描 **
// 配置Swagger 的 Docket 的bean 实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// RequestHandlerSelectors 配置要扫描接口的方式
// basePackage :指定要扫描的包
// any() :扫描全部
// none():不扫描
// withClassAnnotation //扫描类上的注解,参数市一个注解的反射对象
// withMethodAnnotation // 扫描方法上的注解
// 。paths()过滤什么路径
.apis(RequestHandlerSelectors.basePackage("com.jj.demo.Controller"))
.build()
;
}
关闭开关
就会看到这个可爱的表情包!!
问题,如何只希望自己的Swagger 在生成环境中使用,在发布的时候不使用?
判断是不是生产环境 flag=false
注入enable (flag)
第一步
在config 类里把需要的配置文件,发过来,先放参数。
然后调用方法,把测试的环境放到里面
在开启swagger 里把获取到的布尔值放到里面,因为他正好也需要的是一个布尔类型的。
效果
此刻我们开启的环境是dev 配置文件
spring.profiles.active=dev
启动项目
看到此刻的flag 是true
如何配置分组,以及配置多个分组
效果
如何配置多个分组,
几个常用的注解
实体类是public 我写错了!!!!!!!!!!11
效果
**ApiOperation 注释和ApiParam 注释 **
// ApiOperation 接口,不是放在类上的,是方法上
@ApiOperation("hello 的第二个控制类")
@RequestMapping("/hello2")
// 参数的文档注释
public String hello2(@ApiParam("用户名") String name){
return "hello"+name;
}
效果