Swagger概述
Swagger是用于设计、构建、文档化并执行API的框架。使用Swagger有利于前后端分离开发,在测试时可直接在页面输入参数,然后单击按钮访问。Spring Boot与Swagger的集成也非常简单。
如何使用Swagger
使用之前描述中的firstboot项目,项目的代码结构如图3-1所示。
参见:
博客网址:juejin.cn/post/684490…
githup:github.com/hanrx/first…
在该项目中,引入了logback.xml,用于日志记录。
Spring Boot集成Swagger
首先看整个项目的pom.xml文件,完整内容如下:
使用Swagger,首先引入Swagger的两个依赖:springfox-swaggwer2和springfox-swagger-ui。Lombok用来消除POJO模板代码(例如,getter、setter等)的框架,也可做一些其他事情。需要注意的是,无论Eclipse还是IDEA想使用Lombok,都要安装Lombok插件。
创建好pom.xml文件之后,开始创建主类。主类Application的代码如下:
在该类中除了@SpringBootApplication注解外,还添加了**@EnableSwagger2注解,用该注解来启动Swagger**。
为了全面地看到Swagger的各种使用方式,创建一个模型类com.iafoot.firstboot.model.User,代码如下:
在该模型类中,使用了4个注解,分别如下。
@Getter:是一个Lombok注解,用来为POJO类生成getter方法。
@AllArgsConstructor:是一个Lombok注解,用来为POJO类生成全参构造器。 @ApiModel:是一个Swagger注解,用来为一个POJO类做注释。 @ApiModelProperty:是一个Swagger注解,用来为POJO类中的属性做注释。
下面,创建一个简单的controller,代码如下:
在该controller中,提供了一个简单的接口:根据id获取User。该类除了使用Spring的注解外,还使用了Swagger的6个注解,分别如下。
@Api:通常用来为一个controller类做注解,说明该controller的职能。
@ApiOperation:通常用来为一个接口做注释,说明该接口的职能。
@ApiImplicitParams:通常用来包含接口的一组参数注解,可以将其简单地理解为参数注解的集合。
@ApiImplicitParam:用在@AplimplicitParams注解中,说明一个请求参数的各个方面。该注解包含的常用选项有如下。
paramType,参数所放置的地方,包含query、header、path、body及form,最常用的是前4个。注意,query域中的值使用@RequestHeader获取,path域中的值使用@PathVariable获取,body域中的值使用@RequestBody获取,否则可能出错。
name,参数名。
dataType,参数类型。
required,参数是否必须传。
value,参数的值。
defaultValue,参数的默认值。
@ApiResponses:用来包含接口的一组响应注解,可理解为响应注解的集合。
@ApiResponse:用在@ApiResponses中,用于表达一个错误的响应信息。
code,即httpCode数字,例如400。
message,信息,例如“请求参数没填好”。
这些注解就是开发中最常用的Swaggwe注解。到此为止,Spring Boot与Swagger的集成就完成了。下面我们来测试Swagger生成的API文档功能。
分析Swagger生成的API文档
启动firstboot项目之后,在浏览器中输入http://localhost:8080/swagger-ui.html,结果如图3-2所示,这表示Spring Boot整合Swagger成功。
项目中的各个注解在图3-2中都有体现,其中@Api对应图3-2最上边的一行,为整个controller做了注释;@ApiOperation对应图3-2上边第二行,对方法做了注释;@ApiModel与@ApiModelProperty对应图3-2左上角的ResponseClass,对响应类做了注释;@ApiImplicitParam对应图3-2中的Parameters部分,对参数做了注释;@ApiResponse对应图3-2中的ResponseMessages部分,对响应消息做了注释。
使用Swagger进行接口调用
在如图3-2所示的文档中,在要运行方法中填写好入参之后,单击“Try it out!”按钮,就可以执行该接口了! 执行结果如图3-3所示。