对于app开发来说,必须需要有相应的api文档,一般最基础的就是用markdown工具来撰写api文档。当对于开发人员来说,是总会想着寻找更方便撰写,测试,对接前端开发的文档生成的工具。

其实这方面的工具很多:手动撰写的也很多,很多都带有mock测试功能。方便前端对接时使用。

国内的也不少:

RAP:动态生成模拟数据,实时测试等功能。

eoLinker:基于云端的api管理工具,同时提供在线协作,测试等的功能。

SBDoc:SBDoc是一个商业化开源产品,完全免费。无论你是前端工程师,还是后端工程师,接口永远都是两者交互的桥梁,所以SBDoc专为中小型团队量身打造,旨在解决接口的管理,测试与数据生成,实现真正的一体化解决方案。

Apizza - 为极客打造的api管理工具。

easyApi:有分免费和收费,但只支持在线版本的api管理。

CrapApi:一个由anjularjs+bootstrap+springMVC搭建的免费开源的API接口、文档管理系统(应用接口管理系统)。

showDoc:国内的api 管理工具,比较简洁。https://www.showdoc.cc/demo?page_id=10

小幼鸡:也是api 管理工具,差不多,自己可以比较试用,小幺鸡,简单好用的在线接口文档管理系统

NEI:团队协作工具,其实也是在文档等包括api接口的测试等的工具。https://nei.netease.com/

apiview:不多说就是一个工具。https://www.apiview.com/

apidoc:apidoc可以根据代码注释生成web api;没什么侵入性,可是学习成本稍微高点,要了解很多注释里使用到的注解

外国的Swagger 是一款java的api 生成工具,不过是代码侵入的形式,功能是很强大啊。可是代码里要加很多注解,让人别扭。

WSO2 API Management : 是比较好的api管理框架吧!

当然还有很多这种api管理工具,基本都是在云应用上,至少都有免费的。最好寻找离线的工具,可以在本地部署使用为最优了。

==========================================================================

下面重点介绍的是spring-rest-docs的使用。

spring-rest-docs是一个测试驱动的spring组件,他能生成测试成功的接口进行文档生成,支持markdown的转换或者html的转化,对于文档对接,其实也够了,缺点就是无法像其他工具那样模拟测试数据,前端在对接的时候,可以直接调用模拟数据,尤其对于赶进度的接口,可能是先写接口,再写实现,那么这样的话,就有点不适合。

但他的强大之处,就是可以自动生成文档,而且是经过测试过的接口,减去一些不必要的撰写工作,相对于Swagger来说,没有任何代码的依赖侵入。所以在实际的spring那套开发框架下,还是建议使用,他确实很不错。如果真的需要用到其他系统化的api管理工具,可以把markdown再导入到管理工具中去,即可。

另外apidoc 也不错,也是可以考虑使用的。

--------------------------------------------------------------------------------

spring-boot 整合 spring-rest-docs

1,pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <groupId>com.ouyang</groupId>
  7. <artifactId>boss</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <packaging>jar</packaging>
  10.  
  11. <name>boss</name>
  12. <description>Demo project for Spring Boot</description>
  13.  
  14. <parent>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-parent</artifactId>
  17. <version>1.5.4.RELEASE</version>
  18. <relativePath/> <!-- lookup parent from repository -->
  19. </parent>
  20.  
  21. <properties>
  22. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  23. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  24. <java.version>1.8</java.version>
  25. </properties>
  26.  
  27. <dependencies>
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter-aop</artifactId>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-starter-cache</artifactId>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.springframework.boot</groupId>
  38. <artifactId>spring-boot-starter-data-redis</artifactId>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.mybatis.spring.boot</groupId>
  42. <artifactId>mybatis-spring-boot-starter</artifactId>
  43. <version>1.3.0</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>org.springframework.session</groupId>
  47. <artifactId>spring-session</artifactId>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework.boot</groupId>
  51. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  52. </dependency>
  53. <dependency>
  54. <groupId>org.springframework.boot</groupId>
  55. <artifactId>spring-boot-starter-web</artifactId>
  56. </dependency>
  57. <dependency>
  58. <groupId>org.springframework.boot</groupId>
  59. <artifactId>spring-boot-starter-websocket</artifactId>
  60. </dependency>
  61.  
  62. <dependency>
  63. <groupId>mysql</groupId>
  64. <artifactId>mysql-connector-java</artifactId>
  65. <scope>runtime</scope>
  66. </dependency>
  67. <dependency>
  68. <groupId>org.springframework.boot</groupId>
  69. <artifactId>spring-boot-configuration-processor</artifactId>
  70. <optional>true</optional>
  71. </dependency>
  72. <dependency>
  73. <groupId>org.springframework.boot</groupId>
  74. <artifactId>spring-boot-starter-test</artifactId>
  75. <scope>test</scope>
  76. </dependency>
  77. <dependency>
  78. <groupId>org.springframework.restdocs</groupId>
  79. <artifactId>spring-restdocs-mockmvc</artifactId>
  80. <scope>test</scope>
  81. </dependency>
  82.  
  83. <!-- java-web-token 验证授权-->
  84. <dependency>
  85. <groupId>com.auth0</groupId>
  86. <artifactId>java-jwt</artifactId>
  87. <version>3.2.0</version>
  88. </dependency>
  89. <!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt -->
  90. <dependency>
  91. <groupId>io.jsonwebtoken</groupId>
  92. <artifactId>jjwt</artifactId>
  93. <version>0.7.0</version>
  94. </dependency>
  95.  
  96. <dependency>
  97. <groupId>com.google.code.gson</groupId>
  98. <artifactId>gson</artifactId>
  99. <version>2.8.0</version>
  100. </dependency>
  101.  
  102. </dependencies>
  103.  
  104. <build>
  105. <plugins>
  106. <plugin>
  107. <groupId>org.springframework.boot</groupId>
  108. <artifactId>spring-boot-maven-plugin</artifactId>
  109. </plugin>
  110. <plugin>
  111. <groupId>org.apache.maven.plugins</groupId>
  112. <artifactId>maven-surefire-plugin</artifactId>
  113. <configuration>
  114. <includes>
  115. <include>**/*Test.java</include>
  116. </includes>
  117. </configuration>
  118. </plugin>
  119. <plugin>
  120. <groupId>org.asciidoctor</groupId>
  121. <artifactId>asciidoctor-maven-plugin</artifactId>
  122. <version>1.5.2</version>
  123. <executions>
  124. <execution>
  125. <id>generate-docs</id>
  126. <phase>prepare-package</phase>
  127. <goals>
  128. <goal>process-asciidoc</goal>
  129. </goals>
  130. <configuration>
  131. <backend>html</backend>
  132. <doctype>book</doctype>
  133. <attributes>
  134. <snippets>${project.build.directory}/generated-snippets</snippets>
  135. </attributes>
  136. <!-- <sourceDirectory>src/docs/asciidocs</sourceDirectory>
  137. <outputDirectory>target/generated-docs</outputDirectory>-->
  138. </configuration>
  139. </execution>
  140. </executions>
  141. </plugin>
  142. <!--<plugin>
  143. <artifactId>maven-resources-plugin</artifactId>
  144. <executions>
  145. <execution>
  146. <id>copy-resources</id>
  147. <phase>prepare-package</phase>
  148. <goals>
  149. <goal>copy-resources</goal>
  150. </goals>
  151. <configuration>
  152. <outputDirectory>
  153. ${project.build.outputDirectory}/static/docs
  154. </outputDirectory>
  155. <resources>
  156. <resource>
  157. <directory>
  158. ${project.build.directory}/generated-docs
  159. </directory>
  160. </resource>
  161. </resources>
  162. </configuration>
  163. </execution>
  164. </executions>
  165. </plugin>-->
  166. </plugins>
  167. </build>
  168.  
  169. </project>

2,写测试类

  1. @RunWith(SpringRunner.class)
  2. @WebMvcTest(TestController.class)
  3. @AutoConfigureRestDocs(outputDir = "target/generated-snippets")
  4. public class SpringRest2 {
  5.  
  6. @Autowired
  7. private MockMvc mockMvc;
  8.  
  9. @Test
  10. public void shouldReturnDefaultMessage() throws Exception {
  11. this.mockMvc.perform(get("/xiaofeng").param("xiaobing", "Tester").accept(MediaType.APPLICATION_JSON))
  12. .andExpect(status().isOk())
  13. .andDo(document("index2", requestParameters(
  14. parameterWithName("xiaobing").description("xiaobing is autoSelected avaible"))));
  15. }
  16.  
  17. // @Test
  18. // public void shouldReturnDefaultMessage2() throws Exception {
  19. // this.mockMvc.perform(get("/api/liu").accept(MediaType.APPLICATION_JSON))
  20. // .andExpect(status().isOk())
  21. // .andDo(document("index"));
  22. // }
  23.  
  24. }

3,进行junit测试后在target目录下会生成

然后再手动配置接口展示的文档:

这里需要建立相应的文档,并建立index.adoc文件。{snippets} 就是你配置在asciidoctor-maven-plugin插件里的snippets属性

4,生成html文档

在控制台输入: mvnw package (或者mvn package)

会在target/generated-docs 里面生成对应的html文档。

还有更好的用法,可以查看官方文档:

http://docs.spring.io/spring-restdocs/docs/1.1.0.RELEASE/reference/html5/

intellj可以按照asciiDoc插件 方便查看文档

参考:spring-rest-docs https://github.com/sumit-samaddar/spring-rest-docs

官方地址:http://docs.spring.io/spring-restdocs/docs/1.1.0.RELEASE/reference/html5/

Api管理工具(spring-rest-docs)的更多相关文章

  1. 你不得不知的几款常用的在线API管理工具

    在项目开发过程中,总会涉及到接口文档的设计编写,之前使用的都是ms office工具,不够漂亮也不直观,变更频繁的话维护成本也更高,及时性也是大问题.基于这个背景,下面介绍几个常用的API管理工具,方 ...

  2. 几款常用的在线API管理工具(是时候抛弃office编写接口文档了)

    在项目开发过程中,总会涉及到接口文档的设计编写,之前使用的都是ms office工具,不够漂亮也不直观,变更频繁的话维护成本也更高,及时性也是大问题.基于这个背景,下面介绍几个常用的API管理工具,方 ...

  3. 介绍几款常用的在线API管理工具

    在项目开发过程中,总会涉及到接口文档的设计编写,之前使用的都是ms office工具,不够漂亮也不直观,变更频繁的话维护成本也更高,及时性也是大问题.基于这个背景,下面介绍几个常用的API管理工具,方 ...

  4. FREE 开源 API 管理工具等

    最近学习API 管理工具,发现几个不错的东西,记录如下: 1.IBM 收购NODE 厂家  STRONGLOOP 有一产品LOOPBACK,开源,好! 2.apigee  api管理平台 也不错. 3 ...

  5. API 管理工具

    API 管理工具 你还苦于无法有效的管理大量的API吗?今天给大家介绍一款API的管理工具.这款工具可以免费使用,虽然中途可能会提示你购买,但并不影响我们的使用. 下载地址: Windows:http ...

  6. API管理工具介绍

    ​ 时间都去哪里了 敏捷迭代和团队协作,前后端分离的工作模式几乎是每个互联网公司的常规工作模式. 前后端分离,各自开发的优点很多,其中一项是它只需要提供一个统一的API接口,即可被web,iOS,An ...

  7. API管理工具

    开源的api文档管理系统 api文档 php 在项目中,需要协同开发,所以会写许多API文档给其他同事,以前都是写一个简单的TXT文本或Word文档,口口相传,这种方式比较老土了,所以,需要有个api ...

  8. 论元数据和API管理工具

    公司里面的很多部门都在广泛的采用元数据管理,也采用了公司内部开发的元数据管理工具,有些部门的实施效果一直非常好,而有些部门的效果则差强人意.这个问题,其实和软件系统开发完成进入维护阶段后成本居高不下的 ...

  9. 前端api管理工具YApi

    使用YApi接口管理工具,提升前端开发效率前端开发苦恼: 代码中使用json数据模拟后端api数据,注释调取api接口代码,代码乱七八糟 为了测试不同case,央求后端人员返回不同的数据,返回状态.返 ...

随机推荐

  1. WPF 中的 Pack URI地(资源文件加载)

    参考资源网http://msdn.microsoft.com/zh-cn/library/aa970069.aspx#Absolute_vs_Relative_Pack_URIs 在 Windows ...

  2. 机器学习技法:01 Linear Support Vector Machine

    Roadmap Course Introduction Large-Margin Separating Hyperplane Standard Large-Margin Problem Support ...

  3. win10 uwp 绑定多数据

    经常我们需要绑定的数据有多个,当添加到集合控件的对象类型结构比较复杂,我们希望自己来定义排版布局,这时可以使用ItemTemplate用资源的定义 现在有数据 public class caddres ...

  4. 张高兴的 Windows 10 IoT 开发笔记:ToF Sensor VL53L0X

    GitHub : https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/VL53L0X

  5. LINUX 笔记-grep命令

    grep [-acinv] [--color=auto] '查找字符串' filename 它的常用参数如下: -a :将binary文件以text文件的方式查找数据 -c :计算找到'查找字符串'的 ...

  6. ASP.NET没有魔法——ASP.NET 身份验证与Identity

    前面的文章中为My Blog加入了文章的管理功能(ASP.NET没有魔法——ASP.NET MVC使用Area开发一个管理模块),但是管理功能应该只能由“作者”来访问,那么要如何控制用户的访问权限?也 ...

  7. 学习一门新语言需要了解的基础-12 if和switch对比

    本节内容 是否存在性能差异 使用场景 反汇编对比[付费阅读] 之前初步接触了汇编,然后利用汇编简单了解下函数调用的过程,包括怎么样保护堆栈帧现场和恢复现场.另外做了简单的函数调用参数复制,返回值的传递 ...

  8. angular内置provider之$compileProvider

    一.方法概览 directive(name, directiveFactory) component(name, options) aHrefSanitizationWhitelist([regexp ...

  9. java 操作hbase1.2

    说明: .第一部分为代码 .第二部分为工程pom文件 [java] view plain copy import org.apache.hadoop.conf.Configuration; impor ...

  10. 计数排序(O(n+k)的排序算法,空间换时间)

    计数排序就是利用空间换时间,时间复杂度O(n+k) n是元素个数,k是最大数的个数: 统计每个数比他小的有多少,比如比a[i]小的有x个,那么a[i]应该排在x+1的位置 代码: /* * @Auth ...