/**
* @author Be.insighted
* @Description swaggerui
* @since 2020/08/10
*/
@EnableSwagger2
@Configuration
@EnableSwaggerBootstrapUI
public class BaseSwagger {
@Autowired
private Environment env;
@Bean
public Docket createRestApi() {
String packagePath = env.getProperty("swagger.package");
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
// 扫描的路径,Controller所在的包
.select().apis(RequestHandlerSelectors.basePackage(packagePath))
.paths(PathSelectors.any()) // PathSelectors.ant("URL Pattern")
.build();
}
private ApiInfo apiInfo() {
String title = env.getProperty("swagger.title");
String description = env.getProperty("swagger.description");
String version = env.getProperty("swagger.version");
return new ApiInfoBuilder().title(title).description(description).version(version).build();
}
}pom.xml中引入依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger-ui.version}</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>application.yml

使用时直接在浏览器中输入:http://host:port/swagger-ui.html

或者http://host:port/doc.html

在文档管理中直接打开协议文档!!!点击拷贝文档在别处处理即可!要先改代码里的描述,再从文档拷贝,以免手工操作时发生错误。

方法一:禁用(指定环境下生效,指定配置文件)加上注解@Profile({"dev","test"})与@Configuration一起使用

指定后

方法二:配置文件中swagger.enable = false、然后配置类加上注解
@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")# 接口文档 swagger: author: 作者 title: 你的标题 package: controller层所在的文件夹路径,需是.而不是斜杠/ #API扫包 version: 1.0 description: 描述 enable: 是否开启
在下面的类上加上注解@EnableSwaggerBootstrapUI即可!

效果:

No operations defined in spec!
处理: 配置文件中的package需是controller所在的路径,将斜杠/换成.即可!
swagger一些常用注解
@Api:用在类上,说明该类的作用
@ApiOperation:用在方法上,说明方法的作用
@ApiIgnore:使用该注解忽略这个API
@ApiImplicitParams:用在方法上包含一组参数说明
@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
paramType:参数放在哪个地方
header-->请求参数的获取:@RequestHeader
query-->请求参数的获取:@RequestParam
path(用于restful接口)-->请求参数的获取:@PathVariable
body(不常用)
form(不常用)
name:参数名
dataType:参数类型
required:参数是否必须传
value:参数的意思
defaultValue:参数的默认值
@ApiResponses:用于表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
code:数字,例如400
message:信息,例如"请求参数没填好"
response:抛出异常的类
@ApiModel:描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:描述一个model的属性
坑:引入 swagger-bootstrap-ui后,@ApiModelProperty,需将子标签required显示指为true,否则文档里会是否必须填充的是false!
记不住访问url怎么破?重定向!
@RestController
@RequestMapping("/tool/swagger")
public class SwaggerController extends BaseController {
@GetMapping("/tool/swagger")
public String index() {
return redirect("/swagger-ui.html");
}
@GetMapping("/tool/doc")
public String indexDoc() {
return redirect("/doc.html");
}
}
