开发中有很多接口的开发,接口需要配合完整的接口文档才更方便沟通、使用,Swagger是一个用于自动生成在线接口文档的框架,并可在线测试接口,可以很好的跟Spring结合,只需要添加少量的代码和注解即可,而且在接口变动的同时,即可同步修改接口文档,不用再手动维护接口文档Swagger3是17年推出的最新版本,相比于Swagger2配置更少,使用更方便,今天小编就来聊一聊关于springboot swagger生成环境?接下来我们就一起去研究一下吧!

springboot swagger生成环境(四Swagger介绍与使用Spring)

springboot swagger生成环境

开发中有很多接口的开发,接口需要配合完整的接口文档才更方便沟通、使用,Swagger是一个用于自动生成在线接口文档的框架,并可在线测试接口,可以很好的跟Spring结合,只需要添加少量的代码和注解即可,而且在接口变动的同时,即可同步修改接口文档,不用再手动维护接口文档。Swagger3是17年推出的最新版本,相比于Swagger2配置更少,使用更方便。

1. 开发环境
  • JDK 1.8

  • SpringBoot 2.1.18

    2. 添加Maven依赖

    <!--swagger3--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>

    3. 添加Swagger配置类

    import io.swagger.annotations.ApiOperation; 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.builders.ResponseBuilder; import springfox.documentation.oas.annotations.EnableOpenApi; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @EnableOpenApi @Configuration public class SwaggerConfig { @Bean public Docket createRestApi() { //swagger设置,基本信息,要解析的接口及路径等 return new Docket(DocumentationType.OAS_30) .apiInfo(apiInfo()) .select() //设置通过什么方式定位需要自动生成文档的接口,这里定位方法上的@ApiOperation注解 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //接口URI路径设置,any是全路径,也可以通过PathSelectors.regex()正则匹配 .paths(PathSelectors.any()) .build(); } //生成接口信息,包括标题、联系人,联系方式等 private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Swagger3接口文档") .description("如有疑问,请联系") .contact(new Contact("Jonny", "http://www.baidu.com", "lwhou.hn@163.com")) .version("1.0") .build(); } }

    4. 实体类使用Swagger

    在接口类上添加@Api(tags = "操作接口"),tags的值是该类的作用,在文档页面会显示,value不会显示 在需要生成文档的接口上添加注解@ApiOperation 对请求参数添加@ApiParam

    @ApiModel("角色持久化类") @Data @EqualsAndHashCode(callSuper=true) public class SysRole extends DocEntity{ @ApiModelProperty(value = "业务id") private String doctypeid; @ApiModelProperty(value = "所属分类id") private String classifyid; @ApiModelProperty(value = "角色名称") private String name; @ApiModelProperty(value = "角色描述") private String descr; }

    5. 控制器类使用Swagger

    @Api(tags="角色接口") @RestController public class SysRoleController { @Autowired private SysRoleService sysRoleService; @Autowired private BaseSysService baseSysService; /** * 查询所有带分页角色管理 * @param condition 查询条件对象 * @return List<SysRoleParam> */ @ApiOperation(value = "查询所有带分页角色") @RequestMapping("/readAll") @PageableAnnotation public List<SysRoleParam> readAll(SysRoleParam condition){ return sysRoleService.readAll(condition); } /** * 查询所有无分页角色管理 * @param condition 查询条件对象 * @return List<SysRoleParam> */ @ApiOperation(value = "查询所有带分页角色") @RequestMapping("/readAllNoPage") public List<SysRoleParam> readAllNoPage(SysRoleParam condition){ return sysRoleService.readAll(condition); } /** * 查询单条角色管理 * @param condition 查询条件对象 * @return SysRoleParam */ @ApiOperation(value = "查询单条角色") @GetMapping("/readOne") public SysRoleParam readOne(SysRoleParam condition) { return sysRoleService.readOne(condition); } /** * 查询单条角色管理 * @param id 主键编号 * @return SysRoleParam */ @ApiOperation(value = "查询单条角色") @GetMapping("/readOneById") public SysRoleParam readOneById(String id) { return sysRoleService.readOneById(id); } /** * 添加角色管理 * @param entityDto 添加对象 * @return SysRoleParam */ @ApiOperation(value = "添加角色") @PostMapping("/add") public SysRoleParam add(@RequestBody SysRoleParam entityDto) { return sysRoleService.add(entityDto); } /** * 修改角色管理 * @param entityDto 修改对象 * @return void */ @ApiOperation(value = "修改角色") @PostMapping("/update") public void update(@RequestBody SysRoleParam entityDto) { sysRoleService.update(entityDto); } /** * 删除角色管理 * @param entityDto 删除对象(delList包含多个对象主键集合) * @return void */ @ApiOperation(value = "删除角色") @PostMapping("/delete") public void delete(@RequestBody SysRoleParam condition){ sysRoleService.delete(condition.getDelList()); } /** * 拖拽排序 * @param entityDto */ @ApiOperation(value = "拖拽排序") @PostMapping("updateDrag") public void dragSort(@RequestBody SysRoleParam entityDto) { sysRoleService.dragSort(entityDto); } }

    6. 成果展示

    启动服务后,就可以查看在线文档了,本地服务的地址是http://localhost:8080/swagger-ui/index.html ,还可以通过Try it out 来测试。