Springboot整合Swagger(二)
1、创建Springboot项目
2、引入swagger依赖
<!--SpringBoot-starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--swagger-UI页面-前后端分离中很好用--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <!--swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency>
swagger-UI:是swagger提供的接口UI界面
swagger2:提供对应的注解,在项目中书写接口时,加上相应的注解,会自动生成接口UI界面
3、创建SwaggerConfig.java配置文件---配置swagger
package com.gao.swagger.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; @Configuration @EnableSwagger2 //开启swagger2,若启动类上添加了该注解,则配置类可以不添加 public class SwaggerConfig { /*创建swagger bean*/ @Bean public Docket createRestApi() { /* * Docket是swagger全局配置对象 * DocumentationType:指定文档类型为swagger2 */ return new Docket(DocumentationType.SWAGGER_2) // swagger信息 .apiInfo(apiInfo()) /* 配置是否开启swagger * 是否开启 (true 开启 false隐藏。生产环境建议隐藏) * 若为false,则浏览器不能访问 */ .enable(true) /* * swagger 扫描包配置 * select()获取Docket中的选择器,返回ApiSelectorBuilder构造选择器,如扫描扫描包的注解 */ .select() /* 指定扫描器扫描的规则(断言) * 扫描的路径包,设置basePackage会将包下的所有被@Api标记类的所有方法作为api * * requestHandlerSelectors:请求处理选择器 * basePackage():扫描指定包下的所有接口 * any():扫描所有的包 * none():不扫描 * withClassAnnotation():扫描指定类上的注解,参数是 * withMethodAnnotation():扫描方法上的注解 */ .apis(RequestHandlerSelectors.basePackage("com.gao.swagger.controller")) /* --指定路径处理 * pathSelectors:路径选择器,过滤路径 * ang():选择所有路径 * none():都不选择 * ant():选择指定路径 * regex():正则表达式 */ .paths(PathSelectors.any()) .build(); } // swagger文档信息 private ApiInfo apiInfo() { // 作者信息 Contact contact = new Contact( // 文档发布者的名称 "gao", // 文档发布者的网站地址 "https://XXX.XXXX.XXX", // 文档发布者的电子邮箱 "XXXXXXXXX@163.com" ); return new ApiInfoBuilder() //设置文档标题(API名称) .title("SpringBoot中使用Swagger2接口规范") //文档描述 .description("接口文档说明") //服务条款URL .termsOfServiceUrl("http://localhost:8080/") //版本号 .version("1.0.0") .build(); } }
4、启动项目,打开浏览器访问 UI界面
http://localhost:8080/swagger-ui.html
5、书写测试接口
package com.gao.swagger.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("userController") @Api(value = "测试接口", tags = "用户管理相关的接口", description = "用户测试接口") public class UserController { /** * 保存数据 * @param * @return */ @PostMapping(value = "/save") //方法参数说明,name参数名;value参数说明,备注;dataType参数类型;required 是否必传;defaultValue 默认值 @ApiImplicitParam(name = "user", value = "新增用户数据") //说明是什么方法(可以理解为方法注释) @ApiOperation(value = "添加用户", notes = "添加用户") public String saveUser(){ return "保存成功"; } /** * 根据id查询用户 * @param id * @return */ @GetMapping(value = "/findById") @ApiOperation(value = "根据id获取用户信息", notes = "根据id查询用户信息") public String getUser(Integer id){ return "获取成功"; } /** * 删除 * @param * @return */ @DeleteMapping(value = "/deleteById") @ApiOperation(value = "根据id删除数据", notes = "删除用户") public String delete(){ return "删除成功"; } }
6、启动项目,并在浏览器输入http://localhost:8080/swagger-ui.html
进行swagger-ui界面访问
7、调试测试接口
以/userController/findById 为案例
输入请求相关参数
点击执行后,响应结果如下