Swagger概述

Swagger是一组围绕OpenAPI规范构建的开源工具,可帮助设计、构建、记录和使用REST API。
简单说下,它的出现就是为了方便进行测试后台的restful形式的接口,实现动态的更新,当我们在后台的接口
修改了后,swagger可以实现自动的更新,而不需要认为的维护这个接口进行测试。

Swagger2 配置

需要在你的SpringBoot工程中加入如下pom

             <!-- swagger2 配置 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.4.0</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.4.0</version></dependency>

在配置好pom文件之后,我们需要开启Swagger2,我们可以使用两种方式来实现。第一种直接在启动类上加入@EnableSwagger2注解,即可
第二种则是新建配置类来自定义一些Swagger2的属性,如下

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
public class Swagger2 {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.imooc.controller")).paths(PathSelectors.any()).build();}/** @Description: 构建 api文档的信息*/private ApiInfo apiInfo() {return new ApiInfoBuilder()// //大标题.title("测试系统 RESTful API")// 版本号.version("2.0")
//                .termsOfServiceUrl("NO terms of service")// 描述.description("API 描述")//作者.contact(new Contact("zhao", "https://blog.csdn.net/u011342403", "1182867739@qq.com"))
//                .license("The Apache License, Version 2.0")
//                .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html").build();}
}

在我们的Controller和Model中加入一些Swagger2的注解配置

@RestController
@Api(value="用户注册登录接口",tags="登录注册controller")
public class RegistLoginController {@AutowiredUserService userService;@PostMapping(value="/regist")@ApiOperation(value="用户注册",notes="注册接口")public IMoocJSONResult regist(@RequestBody Users users){if (StringUtils.isBlank(users.getUsername())||StringUtils.isBlank(users.getPassword())) {return IMoocJSONResult.errorMsg("用户名或密码不能为空");}if (userService.queryUsernameIsExist(users.getUsername())) {return IMoocJSONResult.errorMsg("该用户名已存在,请重新注册");}else {userService.saveUser(users);}return IMoocJSONResult.ok();}
}

Model配置

@ApiModel(value="用户对象",description="这是用户对象")
public class Users {@Id@ApiModelProperty(hidden=true)private String id;/*** 用户名*/@ApiModelProperty(value="用户名",name="username",example="imooc",required=true)private String username;/*** 密码*/@ApiModelProperty(value="密码",name="password",example="123456",required=true)private String password;/*** 我的头像,如果没有默认给一张*/@Column(name = "face_image")@ApiModelProperty(hidden=true)private String faceImage;/*** 昵称*/private String nickname;/*** 我的粉丝数量*/@Column(name = "fans_counts")@ApiModelProperty(hidden=true)private Integer fansCounts;/*** 我关注的人总数*/@Column(name = "follow_counts")@ApiModelProperty(hidden=true)private Integer followCounts;/*** 我接受到的赞美/收藏 的数量*/@Column(name = "receive_like_counts")@ApiModelProperty(hidden=true)private Integer receiveLikeCounts;

使用上述注解可义定义在传入参数时,是否必须传入等属性 。

Swagger常用注解

swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

  • @Api:修饰整个类,描述Controller的作用
  • @ApiOperation:描述一个类的一个方法,或者说一个接口
  • @ApiParam:单个参数描述
  • @ApiModel:用对象来接收参数
  • @ApiProperty:用对象接收参数时,描述对象的一个字段
  • @ApiResponse:HTTP响应其中1个描述
  • @ApiResponses:HTTP响应整体描述
  • @ApiIgnore:使用该注解忽略这个API
  • @ApiError :发生错误返回的信息
  • @ApiParamImplicitL:一个请求参数
  • @ApiParamsImplicit 多个请求参数
    需要注意的时上述的参数注解在后续的版本中已经修改了,这个要引起注意

Swagger错误java.lang.NoClassDefFoundError: io/swagger/models/Contact

这个错误我基本断定与Swagger版本和SpringBoot携带的Spring版本有关,上述Swagger2.4.0的无法与SpringBoot2版本配合使用,因此在我们后续的使用中需要注意版本的配合关系

SpringBoot+Swagger2实现自动生成API文档相关推荐

  1. springboot 集成 swagger 自动生成API文档

    Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.简单来说,Swagger是一个功能强大的接口管理工具,并且提供了多种编程语言的前后端分离解决方案. S ...

  2. SpringBoot 自动生成API文档

    SpringBoot 自动生成API文档 在做项目的时候,如果项目是前后分离的,后端一定要和前端或者是移动端对接接口,那么问题来了,接口是不是要自己写给他们看,一般的会采用Excel或者Word来写, ...

  3. 超详细!使用swagger自动生成Api文档(swagger-ui)

    介绍 swagger是什么? swagger-ui 使用swagger-ui 简单使用 swagger api注解 本文参考: 介绍 这里是一些介绍,如果想直接看如何使用,请直接跳过这部分.但如果有时 ...

  4. 【接口文档】Django restful framework中自动生成API文档

    Django restful framework中自动生成API文档 一.Swagger概述 1.引言 当接口开发完成,紧接着需要编写接口文档.传统的接口文档使用Word编写,or一些接口文档管理平台 ...

  5. swagger php修改成中文,PHP使用swagger自动生成API文档

    使用 swagger 自动生成 API 文档 使用 swagger 自动生成 API 文档,有需要的朋友可以参考下. 一.下载 swagger-ui 直接上传服务器 二.下载 swagger-php ...

  6. windows api中文文档_Web服务开发:Spring集成Swagger,3步自动生成API文档

    目录: 1,Spring Boot集成Swagger 2,Swagger接口文档页面 3,常见问题和解决方法 在Sping开发REST接口服务时,API文档是不可缺少的一个重要部分.Swagger框架 ...

  7. swagger 修改dto注解_Web服务开发:Spring集成Swagger,3步自动生成API文档

    目录: 1,Spring Boot集成Swagger 2,Swagger接口文档页面 3,常见问题和解决方法 在Sping开发REST接口服务时,API文档是不可缺少的一个重要部分.Swagger框架 ...

  8. PHP使用swagger-php自动生成api文档(详细附上完整例子)

    thinkphp5结合swagger自动生成接口文档 整体介绍 swagger-php.swagger-ui.swagger-editor swagger-ui:主要就是放到tp项目public目录下 ...

  9. 如何利用showdoc自动生成API文档

    介绍 showdoc是一个适合IT团队的文档工具,阅读本文前需要对showdoc有基本了解 .基本介绍可看:https://www.showdoc.cc/help 对于写API文档这件事,虽然说文本编 ...

最新文章

  1. C/C++ 中访问结构体成员的方法
  2. Log binomial 回归在队列中的应用
  3. mysql 禁用查询缓存 query cache
  4. android accessibility 模拟返回_Android无障碍宝典
  5. 程序员面试算法_程序员的前20个搜索和排序算法面试问题
  6. php url传递参数_互联网系统(APP、网站等)通信基石——会话(PHP版)
  7. 使用PowerShell和SQL的示例可用性监视服务的插图
  8. C# 之 Excel 导入一列中既有汉字又有数字:数字可以正常导入,汉字导入为空
  9. Skiing POJ 3037 很奇怪的最短路问题
  10. 玩转地图投影公式,通过例题对兰伯特投影与墨卡托投影求取正反解
  11. Android实现QQ音乐QMC格式转MP3格式
  12. 用户手册 (V4.0 版)
  13. 移动通信核心网技术总结(五)IMS的信令流程及VoLTE的实现
  14. 【历史上的今天】5 月 2 日:首个 MySQL 公开版本发布;微软推出双键鼠标;美国门户网站改名
  15. 解决 Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8
  16. win10服务器怎么连接显示器不亮,Win10检测不到第二个显示器怎么解决?Win10外接显示器黑屏解决方法...
  17. idm由于法律原因无法下载怎么办?
  18. 一个屌丝程序猿的人生(八十八)
  19. java工具:通过文件头的魔数判断文件类型
  20. NiFi Registry元数据详细介绍

热门文章

  1. infomap最全面易懂的解释--最小熵原理:“层层递进”之社区发现与聚类
  2. 绘王新款数位板H1161上市,颜值与实用性兼具
  3. 4K对齐选8,2048和4098扇区数有多大区别?实测告诉你
  4. 有限状态机FSM详解(一)
  5. 【Linux】XShell和Xftp介绍
  6. jenkins——凭据管理
  7. ISA之限制QQ登陆
  8. 多位粮食局长宣布禁食一天体验饥饿被疑作秀-粮食局在-饥饿-禁食
  9. html中多个div如何使边框重合,嵌套div:我如何获得重叠边框?
  10. 日本重启商业捕鲸,技术想拯救它们