各位大佬好啊,我是你们的杨洋啊,今天跟大家聊聊(shui)一篇swagger-ui,嘿嘿,拖更了几篇,我会慢慢补上的...阅读前先点赞、养成好习惯呀~
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
咱们程序员不喜欢虚的,肯定是直接列举跟日常工作学习相关的优点
动态地根据 注解 生成 在线API文档 ,场景:
自测 一般咱们写完新的功能接口都是要自测的,这时候肯定不能直接提交给前端的,之前没用swagger自测,使用postman等工具,还要写接口、写参数、设置请求头等等,接口少还好,写个十几个接口真要命,现在有了swagger就可以很便捷的调用测试自己接口了。
接口文档 虽然在大部分公司都需要写接口文档,但是有时候需求真的很急的时候,来不及写接口文档,直接甩给前端这个swagger-ui页面,告诉他接口在哪,就是一片简化的 接口文档 了,大大的 缩短了前后端的沟通
当然了,肯定还有很多别的好处,只是列举了两点最实用的
<!--Swagger-UI API文档生产工具--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> 复制代码
此配置写demo可以不设置,写项目请设置一下
package com.yang.demo.config; 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; /** * swaggerApi文档配置 */ @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //为指定包下controller生成API文档 .apis(RequestHandlerSelectors.basePackage("com.yang.demo.controller")) //为有@Api注解的Controller生成API文档 // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) //为有@ApiOperation注解的方法生成API文档 // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("SwaggerUI演示Demo")//页面标题 .description("yangLeiDemo接口API")//描述 .contact(new Contact("yanglei", "http://www.baidu.com", "13584019006@163.com"))//创建人及信息 .version("1.0")//版本号 .build(); } } 复制代码
@Api(tags = "MenuController", description = "菜单管理") @RestController @RequestMapping("/menu") public class MenuController { private static final Logger LOG = LoggerFactory.getLogger(MenuController.class); @Resource private MenuService menuService; @ApiOperation(value = "获取所有的菜单", notes = "父节点为0的所有菜单信息") @GetMapping("/getMenuInfo") public List<MenuDto> getMenuInfo(){ LOG.debug("MenuController"); return menuService.getMenuInfo(); } } 复制代码
@ApiModel(value = "MenuDto", description = "菜单Model") public class MenuDto { @ApiModelProperty(value = "菜单ID") private String menuCode; @ApiModelProperty(value = "菜单名称") private String menuName; @ApiModelProperty(value = "菜单父类ID") private String parentCode; @ApiModelProperty(value = "菜单链接") private String menuUrl; 复制代码