Swagger是什么?
Swagger2是一个用于生成、描述和调用RESTful风格的Web服务的框架。它可以帮助开发者快速编写和维护接口文档,提高团队协作的效率。它还可以通过页面展示所有的接口,并且支持在线测试,方便调试和验证。Swagger2遵循了OpenAPI规范,是一种通用的接口定义语言。简而言之,就是在一个Swager已经帮您写好的页面中使用你写的接口查看接口是否可以使用,可以节省后端开发时不用在编辑前端页面用于调试后端接口的时间。
Swagger如何在SpringBoot项目中使用呢?
第一步:先在pom文件中引用依赖
<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.version}</version>
</dependency>
第二步:设置配置类,使用@EnableSwagger2开启,并创建一个Docket对象
注:
DocumentationType.SWAGGER_2:用于指定文档的类型为Swagger2,表示该文档遵循了Swagger2或OpenAPI 2.0的规范。
.groupName(“webApi”):用于设置该文档的分组名称为webApi,表示该文档属于webApi这个分组,可以用来区分不同的文档。
.apiInfo(webApiInfo()):用于设置该文档的基本信息,如标题、描述、版本、联系人等,这些信息会显示在文档的页面上。
.select():用于返回一个ApiSelectorBuilder对象,表示开始选择API的路径和方法。
.paths(Predicates.not(PathSelectors.regex(“/error.*”))):用于设置该文档只包含不以/error开头的路径,表示过滤掉错误页面的接口。
.build():用于构建并返回一个Docket对象,表示完成文档的配置。
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("webApi")
.apiInfo(webApiInfo())
.select()
// .paths(Predicates.not(PathSelectors.regex("/admin/.*")))//如果包含/admin/路径不显示
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
private ApiInfo webApiInfo(){
return new ApiInfoBuilder()
.title("xxx文档")
.description("本文档描述了xxxxx")
.version("1.0")//文档版本
.contact(new Contact("xxxx", "url", "联系方式"))
.build();
}
}
第三步,在接口或者返回的类使用swagger相关的注解,生成更加明确宜读的文档,不然就看接口名认功能了。
@Api:用于标记控制器类上,表示该类是Swagger的资源,可以用来设置接口的分组、描述、作者等信息。
@ApiOperation:用于标记控制器方法上,表示该方法是一个API操作,可以用来设置接口的名称、描述、响应类型等信息。
@ApiParam:用于标记控制器方法的参数上,表示该参数是一个API参数,可以用来设置参数的名称、描述、是否必填、默认值等信息。
@ApiModel:用于标记实体类上,可以用来设置模型的名称、描述、属性等信息,表示API模型
@ApiModelProperty:用于标记实体类的属性上使用,表示该属性是一个API模型属性,可以用来设置属性的名称、描述、是否必填、示例值等信息。
@ApiImplicitParam:用于标记控制器方法的隐式参数,表示该参数是一个API隐式参数,可以用来设置参数的名称、描述、数据类型、参数类型、是否必填、默认值等信息。
@ApiImplicitParams:用于将多个@ApiImplicitParam注解包装为一个注解,方便管理和使用。
@ApiResponse:用于标记控制器方法的响应信息,表示该方法返回一个API响应,可以用来设置响应的状态码、描述、数据类型等信息
@ApiResponses:用于将多个@ApiResponse注解包装为一个注解,方便管理和使用
@ApiIgnore:用于忽略某个控制器类或方法,表示该类或方法不会被Swagger扫描和展示。