1、问题描述

  随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染、先后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。 前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,swagger就是一款让你更好的书写API文档的框架,而且swagger可以完全模拟http请求,入参出参和实际情况差别几乎为零。

  没有API文档工具之前,大家都是手写API文档的(维护起来相当困难),在什么地方书写的都有,有在confluence上写的,有在对应的项目目录下readme.md上写的,每个公司都有每个公司的玩法,无所谓好坏。但是能称之为“框架”的,估计也只有swagger

2、操作步骤

  2.1配置pom.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<parent>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-parent</artifactId>

       <version>1.4.0.RELEASE</version>

   </parent>

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  </properties>

  <dependencies>

    <!-- junit -->

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <scope>test</scope>

    </dependency>

    <!-- spring boot -->

    <dependency>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    <!-- swagger -->

    <dependency>

        <groupId>io.springfox</groupId>

        <artifactId>springfox-swagger2</artifactId>

        <version>2.5.0</version>

    </dependency>

    <!-- swagger-ui -->

    <dependency>

        <groupId>io.springfox</groupId>

        <artifactId>springfox-swagger-ui</artifactId>

        <version>2.5.0</version>

    </dependency>

  </dependencies>

   2.2启动类

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

package com.mao.swagger;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/**

 * Hello world!

 *

 */

@EnableAutoConfiguration

@SpringBootApplication(scanBasePackages = "com.mao")

public class DemoApp {

    public static void main(String[] args) throws Exception {

        SpringApplication.run(DemoApp.class, args);

    }

    

}

    2.3配置config

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

package com.mao.swagger.config;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import io.swagger.annotations.ApiOperation;

import springfox.documentation.builders.RequestHandlerSelectors;

import springfox.documentation.spi.DocumentationType;

import springfox.documentation.spring.web.plugins.Docket;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration

@EnableSwagger2

public class SwaggerConfig {

    

    @Bean

    public Docket swaggerSpringMvcPlugin() {

        return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build();

    }

    

}

 2.4配置controller

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

package com.mao.swagger.controller;

import org.springframework.http.HttpStatus;

import org.springframework.http.MediaType;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import com.mao.swagger.beans.ResObject;

import com.mao.swagger.beans.User;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiImplicitParam;

import io.swagger.annotations.ApiImplicitParams;

import io.swagger.annotations.ApiOperation;

/**

 * Hello world!

 *

 */

@Api(description = "用户接口")

@RestController

@RequestMapping("/demoController")

public class DemoController {

    @ApiOperation(value = "新增用户" ,  notes="新增注册")

    @RequestMapping(value="/createUser",method=RequestMethod.POST,consumes= MediaType.APPLICATION_JSON_VALUE)

    public ResObject createUser(@RequestBody User user){

        System.out.println("createUser:::"+user.toString());

        return new ResObject(HttpStatus.OK.value(), "新增成功.");

    }

    @ApiOperation(value = "修改用户" ,  notes="修改用户")

    @RequestMapping(value="/updateUser",method=RequestMethod.POST,consumes= MediaType.APPLICATION_JSON_VALUE)

    public ResObject updateUser(@RequestBody User user){

        System.out.println("updateUser:::"+user.toString());

        return new ResObject(HttpStatus.OK.value(), "修改成功.");

    }

    @ApiOperation(value = "删除用户" ,  notes="删除用户")

    @ApiImplicitParams({

        @ApiImplicitParam(name = "userId", value = "用户标识", required = true, paramType = "query", dataType = "String")

    })

    @RequestMapping(value="/deleteUser",method=RequestMethod.DELETE)

    public ResObject deleteUser(@RequestParam("userId") String userId){

        System.out.println("deleteUser:::"+userId);

        return new ResObject(HttpStatus.OK.value(), "删除成功.");

    }

    @ApiOperation(value = "查询用户" ,  notes="查询用户")

    @ApiImplicitParams({

        @ApiImplicitParam(name = "userId", value = "用户标识", required = true, paramType = "query", dataType = "String")

    })

    @RequestMapping(value="/queryUser",method=RequestMethod.GET)

    public ResObject queryUser(@RequestParam("userId") String userId){

        System.out.println("queryUser:::"+userId);

        User user = new User(userId, "张三""******""mao2080@sina.com");

        return new ResObject(HttpStatus.OK.value(), user);

    }

}

3、效果展示

按照上面的启动之后访问:http://localhost:8080/swagger-ui.html  发现找不到接口

后面排查是因为没有添加扫描包

重启之后再刷新即可

点击demo-controller可以看到详细接口

点击具体接口可以看到具体参数

点击try it out! 可以测试接口。

后台打印日志

4、附件下载

swagger-demo.zip

5、参考网站

https://blog.csdn.net/i6448038/article/details/77622977

https://blog.csdn.net/blackmambaprogrammer/article/details/72354007

6、推广阅读

Sagger常用参数用法

转载自:http://www.cnblogs.com/mao2080/

Springboot 集成 Swagger相关推荐

  1. [Swagger2]SpringBoot集成Swagger

    SpringBoot集成Swagger 引入依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 ...

  2. 20190909 SpringBoot集成Swagger

    SpringBoot集成Swagger 1. 引入依赖 // SpringBoot compile('org.springframework.boot:spring-boot-starter-web' ...

  3. springboot集成swagger页面空白解决方法

    今天在个人springboot项目使用swagger时遇到页面始终空白的问题,就顺便贴个博文,简单写下springboot集成swagger,并记录下问题. 1. 引入依赖包 <dependen ...

  4. 【水滴石穿】SpringBoot 集成Swagger

    SpringBoot 集成Swagger Swagger 可以使你的restful接口自动生成接口文档,方便查看与测试,下面是一些具体步骤: 1.引入swagger相关依赖 <dependenc ...

  5. Springboot集成Swagger

    Springboot集成Swagger 1. Swagger概述 2. Swagger注解说明 3. Springboot集成Swagger 3.1 引入依赖 3.2 工具类 3.3 配置类 3.4 ...

  6. SpringBoot集成swagger生成在线接口文档

    SpringBoot集成swagger生成在线接口文档 集成maven依赖 <dependency><groupId>io.springfox</groupId>& ...

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

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

  8. Springboot 集成Swagger在线调试

    集成Swagger在线调试 转载http://blog.battcn.com/2018/05/16/springboot/v2-config-swagger/ SpringBoot是为了简化Sprin ...

  9. Springboot集成Swagger报错Parameter 0 of method linkDiscoverers in org.springframework.hateoas.config.Hat

    第一次尝试使用springboot完成后端开发,在做demo的过程中集成swagger发生报错. 其中,swagger版本为2.2.2,springboot版本为2.3.4 觉得可能是版本不匹配,将s ...

  10. SpringBoot——SpringBoot集成Swagger生成API文档

    文章目录: 1.写在前面 2.步骤详解 2.1 pom文件中添加Swagger依赖 2.2 在application.properties核心配置文件中配置Swagger 2.3 编写需要生成API文 ...

最新文章

  1. AMD/NV大跌2周后仅两天收复失地 挖矿成背后推手
  2. 考虑页面置换算法,系统有m个物理块供调度,初始时全空,页面引用串长度为p,包含了n个不同的页号,无论用什么算法,缺页次数不会少于( )
  3. java中ftp删除文件,Java 实现ftp 文件上传、下载和删除
  4. MongoDB via Dotnet Core数据映射详解
  5. python递归函数查询表_python---------------递归函数
  6. 计算机应用技术试卷在线老师,试卷,计-计算机应用技术.pdf
  7. 敏捷开发“松结对编程”系列之八:微软 Tech ed2011 自组织团队与松结对编程讲稿(敏捷开发)...
  8. bash算术求值和errexit陷阱
  9. 2010谷歌校园招聘笔试题
  10. 【VirtualBox】VirtualBox的四种网络连接模式
  11. jq22网站资源分享
  12. 北京 php 外包,=== | php外包与php技术服务商
  13. 卡内基梅隆计算机金融,卡耐基梅隆大学计算金融项目申请要求是什么?
  14. 【博学谷学习记录】超强总结,用心分享 | JavaString类知识要点总结
  15. 最新51CTO学院vue.js项目实战课程
  16. mysql front修改数据传奇_如何修改传奇数据库HeroDB名称?
  17. usb触摸屏驱动 - usbtouchscreen
  18. 做游戏与web的区别 - 服务器篇【1】
  19. FPU烤机是什么意思 FPU烤机用什么软件
  20. 0.1元成本柿饼派实现红外控制空调了

热门文章

  1. JAVA进阶教学之(序列化和反序列化)
  2. python程序设计第一章答案_Python《学习手册:第一章-习题》
  3. oracle erp 报表开发手册,处置OracleERP导出的报表文件
  4. Java开发的Spring Boot的核心模块
  5. Java开发中快速提升编码能力的方法有哪些?
  6. python get_len_Python类,特殊方法, __getitem__,__len__, __delitem__
  7. python去重语句_Python对列表去重的多种方法(四种方法)
  8. stream of java_java8新特性之强大的Stream API
  9. python解析二维码_Python二维码生成识别实例详解
  10. 云南“轮椅学子”博士毕业,清华校长俯身与他合影,他的妈妈被全网刷屏!...