各位大佬好啊,我是你们的杨洋啊,今天跟大家聊聊(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;
复制代码