一、遇到的问题

作为一名coder,经常需要向别人提供接口,或者调用别人的接口。于是就有了接口参数是什么意思,要怎么传参数,返回值是什么意思……有多少调用方,就会有多少人来询问这些参数。如果是长时间之后,自己或许都不知道这些参数是什么意思。于是维护接口文档便成了一项必不可少的工作,维护文档也有很多问题:

  • 如果手工写会很费劲
  • 接口变更后可能会忘了同步文档
  • ……

二、Swagger配置

Swagger(官方文档)可以快速帮助实现接口api的维护与简单测试。

a、引入maven依赖包

  1. <dependency>
  2. <groupId>io.springfox</groupId>
  3. <artifactId>springfox-swagger2</artifactId>
  4. <version>2.5.0</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>io.springfox</groupId>
  8. <artifactId>springfox-swagger-ui</artifactId>
  9. <version>2.5.0</version>
  10. </dependency>

b、配置Swagger

  1. @Configuration
  2. @EnableSwagger2
    @Profile("dev")
  3. public class SwaggerConfig {
  4. public static final String SWAGGER_SCAN_BASE_PACKAGE = "api.doc.demo.controller";
  5. public static final String VERSION = "1.0.0";
  6.  
  7. @Bean
  8. public Docket createRestApi() {
  9. return new Docket(DocumentationType.SWAGGER_2)
  10. .apiInfo(apiInfo())
  11. .select()
  12. /**api接口包扫描路径*/
  13. .apis(RequestHandlerSelectors.basePackage(SWAGGER_SCAN_BASE_PACKAGE))
  14. /**可以根据url路径设置哪些请求加入文档,忽略哪些请求*/
  15. .paths(PathSelectors.any())
  16. .build();
  17. }
  18. private ApiInfo apiInfo() {
  19. return new ApiInfoBuilder()
  20. /**设置文档的标题*/
  21. .title("Swagger2 接口文档示例")
  22. /**设置文档的描述*/
  23. .description("更多内容请关注:http://www.abc.com")
  24. /**设置文档的联系方式*/
  25. .contact(new Contact("create by XXX", "http://www.abc.com", "xxxx.@xxx.com"))
  26. /**设置文档的License信息->1.3 License information*/
  27. .termsOfServiceUrl("www.abc.com")
  28. .license("xxx")
  29. .licenseUrl("http://www.xxx.com")
  30. /**设置文档的版本信息-> 1.1 Version information*/
  31. .version(VERSION)
  32. .build();
  33. }
  34. }

c、常用注解

  • @ApiOperation : api说明
  1. @ApiOperation(value="获取用户列表", notes="获取所有用户列表",produces = "application/json")
  2. @RequestMapping(value="/getList", method= RequestMethod.GET)
  3. public List<UserModel> getUserList() {
  4. return getDemoList();
  5. }

  • @ApiResponses :默认Response的基础上增加新的Response说明
  • @ApiImplicitParam : 描述接口参数
  1. @ApiImplicitParam(name = "userId",value = "用户ID",dataType = "int",paramType = "path")
  • @ApiImplicitParams : 多个参数
  1. @ApiImplicitParams({
    @ApiImplicitParam(name = "id",value = "用户ID",paramType = "path",dataType = "int"),
    @ApiImplicitParam(name = "userName",value = "用户名称",paramType = "form",dataType = "string")
    })
  • @ApiModel : model属性
  1. @ApiModel(value = "user", description = "user对象")
    public class UserModel {
    @ApiModelProperty(value = "ID", dataType = "Integer", required = true)
    private Integer userId;
    @ApiModelProperty(value = "用戶名", dataType = "String")
    private String userName;
    @ApiModelProperty(value = "性別", dataType = "Integer", allowableValues = "0,1,2")
    private Integer sex;
    }

这样就可以通过访问 http://localhost:8080/swagger-ui.html 看到接口API调用说明。demo

【工具】Swagger2写接口注释的更多相关文章

  1. Java的LockSupport工具,Condition接口和ConditionObject

    在之前我们文章(关于多线程编程基础和同步器),我们就接触到了LockSupport工具和Condition接口,之前使用LockSupport工具来唤醒阻塞的线程,使用Condition接口来实现线程 ...

  2. Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2

    1. 引言 各位在开发的过程中肯定遇到过被接口文档折磨的经历,由于 RESTful 接口的轻量化以及低耦合性,我们在修改接口后文档更新不及时,导致接口的调用方(无论是前端还是后端)经常抱怨接口与文档不 ...

  3. 在Eclipse中怎样写Java注释

    java中的注释分为实现注释和文档注释 实现注释就是那些/……../和//……的注释,是注释程序用的,文档注释是/*……./的注释,是用来生成javadoc的.设置方法如下: 1.打开Eclipse的 ...

  4. 【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍

    原文:[百度地图API]如何在地图上添加标注?--另有:坐标拾取工具+打车费用接口介绍 摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. ------ ...

  5. 前端必备之Node+mysql+ejs模版如何写接口

    前端必备之Node+mysql+ejs模版如何写接口 这星期公司要做一个视频的后台管理系统, 让我用Node+mysql+ejs配合写接口, 周末在家研究了一下, 趁还没来具体需求把研究内容在这里分享 ...

  6. node+pm2+express+mysql+sequelize来搭建网站和写接口

    前面的话:在这里已经提到了安装node的方法,node是自带npm的.我在技术中会用es6去编写,然后下面会分别介绍node.pm2.express.mysql.sequelize.有少部分是摘抄大佬 ...

  7. Springboot集成swagger2生成接口文档

    [转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11509884.html    作者:jstarseven    码字挺辛苦的.....   一 ...

  8. Java后端开发工作 - 写接口

    我在公司的工作内容是,对于一个BS应用,负责服务器端开发工作,Java语言.与前端开发人员合作,最终提供给前端RESTFUL接口,保证页面正常响应. 经验之谈 一个接口可以理解为一个业务逻辑,一个业务 ...

  9. 「快学springboot」16.让swagger帮忙写接口文档

    swagger简介 官方的介绍 THE WORLD'S MOST POPULAR API TOOLING Swagger is the world's largest framework of API ...

随机推荐

  1. Microsoft License Keys – Volume

    VLK Product Group Product KeyOffice XP Applications P3HBK-F86Y2-374PQ-KW92R-B36VTOffice 2003 Suites ...

  2. js 常用 DOM 元素宽高

    提示:document.documentElement 和 document.getElementsByTagName('html')[0] 是一样的: 1.视口大小(不包括滚动条,视口字面理解当然是 ...

  3. 该死的Kafka,远程连接Kafka超时以及解决办法

    关于消息的发布与订阅,之前一直使用的是activeMQ基于JMS的消息队列进行操作的,最近听说有一个更高效的消息的发布与订阅技术,就是Kafka. 关于kafka的介绍,在这里就不做过多讲解了,因为我 ...

  4. 关于HashSet在 java7 与 java8的不同

    作者:RednaxelaFX链接:https://www.zhihu.com/question/28414001/answer/40733996来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...

  5. node.js + mongodb 做项目的详解(二)

    这次内容是结合bootstrap把登陆注册做好,还有就是express的中间件等问题. 看这篇博客之前建议先看我上篇写的那篇博客http://www.cnblogs.com/hubwiz/p/4118 ...

  6. JS获取当前网页大小以及屏幕分辨率等

    网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...

  7. Python的subprocess模块(二)

    原文:http://blog.chinaunix.net/uid-26000296-id-4461522.html 一.subprocess 模块简介 subprocess最早是在2.4版本中引入的. ...

  8. 【我的Android进阶之旅】解决Center OS 64位系统编译Android APP报错error=2和finished with non-zero exit value 127

    一.错误描述 1.问题 java.io.IOException: error=2, 没有那个文件或目录 今天在刚重新搭建好的64位的Center OS上安装好了Android SDK,Jenkins, ...

  9. SSM框架关于后台返回JSON数据中显示很多不需要的字段为NULL

    xml 配置 spring mvc 的 json 返回忽略 null 字段 <mvc:annotation-driven> <mvc:message-converters regis ...

  10. springMvc异常之 For input string: "show"

    异常提示: For input string: "show" 异常原因: 使用@PathVariable方式获取值,返回类型为String return "redirec ...