项目总结60:Springboot集成swagger2
时间:2020-03-27
本文章向大家介绍项目总结60:Springboot集成swagger2,主要包括项目总结60:Springboot集成swagger2使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Springboot集成swagger2
一、swagger2简介
swagger2是一款开源项目,可以根据配置自动生成项目接口文档。可以规范文档,减少文档撰写时间
二、代码示例
1- 引入依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.5.21</version> </dependency> <!--引入ui包--> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.3</version> </dependency>
2-配置类
@Configuration @EnableSwagger2 public class SwaggerConfiguration { @Bean public Docket webApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("APP端接口")//1-端口所属模块 .select() .apis(RequestHandlerSelectors.basePackage("com.example.bigdemo.swagger"))//扫描当前package下的controller .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))//扫描类上标有@Api的controller类 .apis(RequestHandlerSelectors.withMethodAnnotation(SwaggerVisibleAnnotation.class))//扫描方法上标有@SwaggerVisibleAnnotation的方法 .paths(PathSelectors.any()) .build(); } /*** 获取 API 信息 方法 ***/ private ApiInfo apiInfo() { // 作者 名称 连接地址 邮箱 是 固定写法 Contact contact = new Contact("TangYj", null, null); // 返回一个 构造对象 return new ApiInfoBuilder() .title("fmk项目模版") .description("项目接口api文档") .contact(contact) .version("1.0") .build(); } }
3-Controller
@Api(value = "登陆相关", tags = "登陆相关接口") @RestController @RequestMapping(value="/api") public class SwaggerTestController { @ApiOperation("登陆Path") @SwaggerVisibleAnnotation @PostMapping(value="/login/path/{account}/{password}") public LoginRes loginPath( @ApiParam(name = "account",value = "账号",required = true)@PathVariable(name = "account",required = true)String account, @ApiParam(name = "password",value = "密码",required = true)@PathVariable(name = "password",required = true)String password ) throws Exception { //省略业务代码...... System.out.println("account: " + account); System.out.println("password: " + password); return new LoginRes("tokenPath"); } @ApiOperation("登陆Query") @SwaggerVisibleAnnotation @PostMapping(value="/login/query") public LoginRes loginQuery( @ApiParam(name = "account",value = "账号",required = true)@RequestParam(name = "account",required = true)String account, // @ApiParam对参数进行解释 @ApiParam(name = "password",value = "密码",required = true)@RequestParam(name = "password",required = true)String password ) throws Exception { //省略业务代码...... System.out.println("account: " + account); System.out.println("password: " + password); return new LoginRes("tokenQuery"); } @ApiOperation("登陆POST")//接口名称 @SwaggerVisibleAnnotation//自定义注解,接口是否再文档中展示,没有该注解表示不展示 @PostMapping(value="/login/post") public LoginRes login(@RequestBody LoginReq loginReq) throws Exception { //省略业务代码...... System.out.println("account: " + loginReq.getAccount()); System.out.println("password: " + loginReq.getPassword()); return new LoginRes("tokenPost"); } }
4-自定义注解
/** * 用于swagger自定义可见注解 * * @author cjm * @date 2019/10/11 13:36 **/ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface SwaggerVisibleAnnotation { }
5-接口请求和返回实体类
@ApiModel("登陆请求参数")//类名称描述 @Data @AllArgsConstructor @NoArgsConstructor public class LoginReq { @ApiModelProperty("账号")//参数描述 private String account; @ApiModelProperty("密码") private String password; } -------------------------------------------------------------------------------- @ApiModel("登陆返回参数") @Data @NoArgsConstructor @AllArgsConstructor public class LoginRes { @ApiModelProperty("用户令牌") private String token; }
三、效果展示(网址:http://IP:port/doc.html)
主页展示
具体接口文档页展示
具体接口调试页展示
END
原文地址:https://www.cnblogs.com/wobuchifanqie/p/12583087.html
- JS魔法堂:jsDeferred源码剖析
- JavaSE(八)之集合概述
- 浅谈PHP开发与Java开发的优劣势,还不知道学习方向的可以来看看
- KVM+Qemu+Libvirt实战
- 内核级虚拟化技术
- tomcat配置ROOT目录和多站点
- IntelliJ IDEA使用(一)基本设置与类、方法模板设置
- JS魔法堂:从void 0 === undefined说起
- Maven(三)在Eclipse中使用Maven与Maven坐标
- Nginx多站点设置及负载均衡
- Maven(二)Maven项目的创建(命令、myeclipse)及生命周期
- JS魔法堂:初探传说中的setImmediate函数
- 配置nginx.conf实现负载均衡
- Maven(一)初识Maven
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Linux系统集群架构线上项目配置实战(二)
- Linux系统集群架构线上项目配置实战(三)
- Linux系统集群架构线上项目配置实战(四)
- Linux系统集群架构线上项目配置实战 五(完结篇)
- 生产Mysql数据库数据恢复实战过程
- voliate工作实际应用场景
- Linux三剑客命令之Awk
- 面试2万月薪必会知识:AQS
- MyBatis XML详解
- Linux三剑客命令之Sed
- Linux运维必会的100道MySql面试题之(四)
- 开源组件ELK日志系统配置与管理
- MySQL集群高可用架构之MHA
- MySQL 主从同步架构中你不知道的“坑”
- Nginx+keepalived高可用配置实战(内附彩蛋)