Swagger是什么?

Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
  Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。

Swagger 的优势

  1. 支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。

  2.提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接

在SpringBoot中集成Swagger是目前的项目主流,这里就展示一个Demo.

使用教程

1. 使用IDEA创建一个SpringBoot项目

2. 添加依赖(这些依赖中不仅仅是Swagger的依赖,还有一些常用的依赖,一并列出)

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-test</artifactId>
  9. <scope>test</scope>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter</artifactId>
  14. </dependency>
  15.  
  16. <dependency>
  17. <groupId>org.springframework.boot</groupId>
  18. <artifactId>spring-boot-devtools</artifactId>
  19. <scope>runtime</scope>
  20. <optional>true</optional>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.projectlombok</groupId>
  24. <artifactId>lombok</artifactId>
  25. <optional>true</optional>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-test</artifactId>
  30. <scope>test</scope>
  31. <exclusions>
  32. <exclusion>
  33. <groupId>org.junit.vintage</groupId>
  34. <artifactId>junit-vintage-engine</artifactId>
  35. </exclusion>
  36. </exclusions>
  37. </dependency>
  38.  
  39. <!--Swagger 依赖开始-->
  40. <dependency>
  41. <groupId>io.springfox</groupId>
  42. <artifactId>springfox-swagger2</artifactId>
  43. <version>2.7.0</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>io.springfox</groupId>
  47. <artifactId>springfox-swagger-ui</artifactId>
  48. <version>2.7.0</version>
  49. </dependency>
  50. <dependency>
  51. <groupId>com.fasterxml.jackson.core</groupId>
  52. <artifactId>jackson-databind</artifactId>
  53. <version>2.10.0</version>
  54. </dependency>
  55. <!--Swagger 依赖结束-->
  56. </dependencies>

3. 创建SwaggerConfig.java(Swagger的配置类)

  1. @Configuration //必须存在
  2. @EnableSwagger2 // 必须存在
  3. // 必须存在 扫描的API Controller包
  4. @ComponentScan(basePackages = {"com.yhl.test.swagger.controller" })
  5. public class SwaggerConfig {
  6. @Bean
  7. public Docket customDocket(){
  8. return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
  9. }
  10. public ApiInfo apiInfo(){
  11. Contact contact = new Contact("YHL","http://www.ly058.cn/","email");
  12. return new ApiInfoBuilder()
  13. .title("测试Swagger API")
  14. .description("API接口")
  15. .contact(contact)
  16. .version("1.0.1")
  17. .build();
  18. }
  19. }

4.创建测试的entity类(@Data是lombok的标签,在这里替代getter和setter方法)

  1. @Data
  2. public class User {
  3. private String username;
  4. private String password;
  5.  
  6. public User(String username, String password){
  7. this.username = username;
  8. this.password = password;
  9. }
  10. }

5. 创建测试的controller类(为了方便,没有连接数据库,使用list替代)

  1. @RestController
  2. @Api(value = "用户模块", description = "用户接口信息")
  3. public class UserController {
  4. //模拟数据库
  5. public static List<User> users = new ArrayList<User>();
  6.  
  7. static {
  8. users.add(new User("张三", "123456"));
  9. users.add(new User("李四", "123456"));
  10. }
  11.  
  12. //获取用户列表
  13. @ApiOperation(value = "获取用户列表", notes = "获取所有用户的列表")
  14. @GetMapping("/users")
  15. public Object users() {
  16. Map<String, Object> map = new HashMap<>();
  17. map.put("users", users);
  18. return map;
  19. }
  20.  
  21. @ApiOperation(value = "获取单个用户", notes = "根据ID查询某个用户的信息")
  22. @ApiImplicitParam(value = "用户ID", paramType = "path")
  23. @GetMapping("/user/{id}")
  24. public User getUserById(@PathVariable("id") int id) {
  25. return users.get(id);
  26. }
  27.  
  28. @ApiOperation(value = "添加用户", notes = "根据传入的用户信息添加用户")
  29. @ApiImplicitParam(value = "用户对象", paramType = "query")
  30. @PostMapping("/user")
  31. public Object addUser(User user) {
  32. return users.add(user);
  33.  
  34. }
  35.  
  36. @ApiOperation(value = "删除用户", notes = "根据传入的用户ID删除用户")
  37. @ApiImplicitParam(value = "用户ID",paramType = "path")
  38. @DeleteMapping("/user/{id}")
  39. public Object delete(@PathVariable("id") int id) {
  40. return users.remove(id);
  41. }
  42.  
  43. }

6. 结果,访问http://localhost:8080/swagger-ui.html

SpringBoot + Swagger Demo的更多相关文章

  1. springboot+swagger接口文档企业实践(上)

    目录 1.引言 2.swagger简介 2.1 swagger 介绍 2.2 springfox.swagger与springboot 3. 使用springboot+swagger构建接口文档 3. ...

  2. Swagger详解(SpringBoot+Swagger集成)(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/ai_miracle/article/de ...

  3. 【转】Swagger详解(SpringBoot+Swagger集成)

    Swagger-API文档接口引擎Swagger是什么 Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器 ...

  4. SpringBoot+Swagger整合API

    SpringBoot+Swagger整合API Swagger:整合规范的api,有界面的操作,测试 1.在pom.xml加入swagger依赖 <!--整合Swagger2配置类--> ...

  5. activeMQ的spring、springboot的DEMO

    一.activeMQ实现spring的demo 1:pom.xml文件 <dependencies> <dependency> <groupId>junit< ...

  6. springboot+swagger集成

    一.swagger介绍 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.本文简单介绍了在项目中集成swagger的方法和一些常见问题.如果想深入分析项目源码,了解更多内容 ...

  7. SpringBoot 入门 Demo

    SpringBoot   入门 Demo Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从 ...

  8. springboot+swagger接口文档企业实践(下)

    目录 1.引言 2. swagger接口过滤 2.1 按包过滤(package) 2.2 按类注解过滤 2.3 按方法注解过滤 2.4 按分组过滤 2.4.1 定义注解ApiVersion 2.4.2 ...

  9. 第四章 springboot + swagger(转载)

    此篇博客转发自:http://www.cnblogs.com/java-zhao/p/5348113.html swagger用于定义API文档. 好处: 前后端分离开发 API文档非常明确 测试的时 ...

随机推荐

  1. python中浅拷贝和深拷贝的区别

    浅拷贝 可变类型浅拷贝copy函数就是浅拷贝,只对可变类型的第一层对象进行拷贝,对拷贝的对象开辟新的内存空间进行存储,不会拷贝对象内部的子对象可变类型:a = [1, 2, 3] b = [11, 2 ...

  2. java整合Elasticsearch,实现crud以及高级查询的分页,范围,排序功能,泰文分词器的使用,分组,最大,最小,平均值,以及自动补全功能

    //为index创建mapping,index相当于mysql的数据库,数据库里的表也要给各个字段创建类型,所以index也要给字段事先设置好类型: 使用postMan或者其他工具创建:(此处我使用p ...

  3. EM 算法 Expectation Maximization

  4. Webpack + VueJS 学习、跳坑和总结

    这篇随笔会陆续地更新下去,用于汇集一些关于Webpack的初学跳坑总结还有VueJS的基础知识. Webpack部分 ① 快速建立一个Webpack-Vue项目开发环境(4.39.1-2019/08/ ...

  5. vs中CString的用法,以及所需的头文件

    转载:https://blog.csdn.net/shizhandong50/article/details/13321505 1.CString类型的头文件#include <afx.h> ...

  6. 图像sensor的bitdepth

    参考来源:https://blog.csdn.net/yuejisuo1948/article/details/83617359 bitdepth目前个人理解是sensor像素上表示颜色的范围,也可说 ...

  7. 下载、安装 PL/SQL Developer

    操作系统:Windows 10 x64 第一节:下载 Oracle Database XE 11gR2 第二节:安装.验证安装 Oracle Database XE 11gR2 第三节:Oracle ...

  8. JavaFX ComboBox的选中事项

    参考1:https://blog.csdn.net/mexel310/article/details/37909205 参考2:https://blog.csdn.net/maosijunzi/art ...

  9. 阅读源码,从ArrayList开始

    前言 为啥要阅读源码?一句话,为了写出更好的程序. 一方面,只有了解了代码的执行过程,我们才能更好的使用别人提供的工具和框架,写出高效的程序.另一方面,一些经典的代码背后蕴藏的思想和技巧很值得学习,通 ...

  10. linux 内存泄露检测工具

    Valgrind Memcheck 一个强大开源的程序检测工具 下载地址:http://valgrind.org/downloads/current.html Valgrind快速入门指南:http: ...