本文已参与「新人创作礼」活动,一起开启掘金创作之路。
swagger是一个自动生成接口文档和测试文档的工具 因为现在前后端分离的项目越来越多 所以项目中集成swagger也是十分方便的 而swagger集成到springboot中也是很简单的
首先 先在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.version}</version>
</dependency>
然后新建一个配置类
package com.zhong.share.work.configer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
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;
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
.select()
//你的接口的根目录
.apis(RequestHandlerSelectors.basePackage("com.zhong.share.work"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
//生成的网站的标题和描述和网站信息
return new ApiInfoBuilder().title("admin-swagger")
.description("欢迎管理员")
.contact(new Contact("", "", ""))
.version("")
.build();
}
}
这样你的项目就集成了swagger了 而怎么使用呢 主要是通过注解来使用swagger
其中常使用的注解有以下几个
1.@Api(tags={"",""}),description = "" ps:接口的使用注解接口
@Api(tags = {"AdminControl","管理员控制器"},description = "管理员使用接口")
public class AdminControl {
}
效果图如下:
- @ApiOperation(value = "获取用户信息",notes = "接口提示信息") ps:接口里的方法使用注解接口
@ApiOperation(value = "获取用户信息",notes = "接口提示信息")
@GetMapping("/getUserInfo")
public List<User> getUserInfo(){
List<User> userList = userService.getUserInfo();
return userList;
}
效果图如下:
- @ApiParam(name = "用户编号",value = "id",required = true) ps:接口里的方法参数使用注解接口 这个必须要在方法参数前面使用
@PostMapping("/deleteUser/{id}")
/*
* @ApiParam 写在方法参数前面。用于对参数进行描述或说明是否为必填项等说明。 name:参数名称 value:参数描述 required:是否必填项
*/
public void deleteUser(@PathVariable("id")
@ApiParam(name = "用户编号",value = "id",required = true)int id) {
userService.deleteUser(id);
}
效果图如下:
4.@ApiModel(value = "用户实体", description = "User Entity") ps:实体类的使用接口
@ApiModel(value = "用户实体", description = "User Entity")
public class User implements UserDetails {
private Integer id;
/*
* @ApiModelProperty 可以用在方法或属性上。用于当对象作为参数时定义这个字段的内容。 value:描述 name:重写属性名
* required:是否是必须的 example:示例内容 hidden:是否隐藏
*/
private Boolean enabled;
@ApiModelProperty(value = "用户的名称",name = "用户名",required = false,example = "钟宇强",hidden = false)
效果图如下:
- @ApiModelProperty(value = "用户的名称",name = "用户名",required = false,example = "钟宇强",hidden = false) ps:实体类的属性的使用接口
@ApiModelProperty(value = "用户的名称",name = "用户名",required = false,example = "钟宇强",hidden = false)
private String username;
效果图如下:
页面图如下: