SpringBoot2中,怎么生成静态文档
SpringBoot2中,怎么生成静态文档
在实际开发过程中,我们通过swagger就可以生成我们的接口文档,这个文档就可以提供给前端人员开发使用的。但是,有时候,我们需要把我们的接口文档,提供给第三方合作公司怎么办?
本人现在就遇到这个问题。我们的项目开发完成之后,也是前后端分离的模式。但是,第三方公司需要我们的接口文档,怎么办?那就需要我们把swagger的文档,生成静态文档才可以发送过去。
接口文档
说起来接口文档,大家最熟悉的就是swaggger了吧。这个可以很方便的可以注解的方式,就可以生成我们需要的文档。而且可以在线调试接口。
随着前后端分离架构和微服务架构的流行,我们使用Spring Boot来构建RESTful API项目的场景越来越多。通常我们的一个RESTful API就有可能要服务于多个不同的开发人员或开发团队:IOS开发、Android开发、Web开发甚至其他的后端服务等。

上面就是项目启动之后,swagger给我们提供的可视化界面了。
swagger项目集成
springboot中集成swagger很简单,只需要我们导入依赖,然后在方法上写上注解就可以了。

应用主类中添加@EnableSwagger2Doc注解,具体如下

根据项目需要,我们可以修改swagger的默认配置
swagger.title=spring-boot-starter-swagger
swagger.description=Starter for swagger 2.x
swagger.version=1.4.0.RELEASE
swagger.license=Apache License, Version 2.0
swagger.licenseUrl=https://www.apache.org/licenses/LICENSE-2.0.html
swagger.termsOfServiceUrl=
swagger.contact.name=
swagger.contact.url=
swagger.contact.email=
swagger.base-package=
swagger.base-path=/**
启动应用,访问:http://localhost:8080/swagger-ui.html 接可以访问了
注解很简单
@Api(tags = "用户管理")
@RestController
@RequestMapping(value = "/users")     // 通过这里配置使下面的映射都在/users下
public class UserController {
    // 创建线程安全的Map,模拟users信息的存储
    static Map<Long, User> users = Collections.synchronizedMap(new HashMap<>());
    @GetMapping("/")
    @ApiOperation(value = "获取用户列表")
    public List<User> getUserList() {
        List<User> r = new ArrayList<>(users.values());
        return r;
    }
}
简单的接口文档就部署完了,接下来就是静态化了
接口文档静态化
Swagger2Markup是Github上的一个开源项目。该项目主要用来将Swagger自动生成的文档转换成几种流行的格式以便于静态部署和使用,比如:AsciiDoc、Markdown、Confluence。
今天用到的就是Swagger2Markup,这个插件就可以帮助我们来实现静态化功能。
项目主页:https://github.com/Swagger2Markup/swagger2markup
添加依赖
<dependency>
        <groupId>io.github.swagger2markup</groupId>
        <artifactId>swagger2markup</artifactId>
        <version>1.3.3</version>
        <scope>test</scope>
    </dependency>
这个时候,我们<scope>test</scope>,这个就可以在正式环境中去掉这个依赖了。
为了大家直观,编写一个测试类来完成这个静态化。
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class DemoApplicationTests {
    @Test
    public void generateAsciiDocs() throws Exception {
        URL remoteSwaggerFile = new URL("http://localhost:8080/v2/api-docs");
        Path outputDirectory = Paths.get("src/docs/asciidoc/generated");
        //    输出Ascii格式
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.ASCIIDOC)
                .build();
        Swagger2MarkupConverter.from(remoteSwaggerFile)
                .withConfig(config)
                .build()
                .toFolder(outputDirectory);
    }
}
执行完这个代码之后,就可以在项目目录下生产我们需要的 ASCIIDOC 文档了
src
--docs
----asciidoc
------generated
--------definitions.adoc
--------overview.adoc
--------paths.adoc
--------security.adoc
生成HTML
我们大都是需要的就是html文档,方便查看。接下来,只需要修改一点配置就可以了。
添加插件依赖
<plugin>
    <groupId>org.asciidoctor</groupId>
    <artifactId>asciidoctor-maven-plugin</artifactId>
    <version>1.5.6</version>
    <configuration>
   	    <sourceDirectory>src/docs/asciidoc/generated</sourceDirectory>
   	    <outputDirectory>src/docs/asciidoc/html</outputDirectory>
   	    <backend>html</backend>
   	    <sourceHighlighter>coderay</sourceHighlighter>
   	    <attributes>
            <toc>left</toc>
  	    </attributes>
  	</configuration>
</plugin>
<backend>html</backend>这个代码就可以生成html文档了。
执行该插件的asciidoctor:process-asciidoc命令之后,就能src/docs/asciidoc/html目录下生成最终可用的静态部署HTML了 。
预览一下文档

是不是还不错!
其实这个插件可以生成很多类型的接口文档,markdown类型也可以。大家下来,可以自己研究一下。好了,今天经验就分享到这里了。
来源:站长平台
SpringBoot2中,怎么生成静态文档的更多相关文章
- Django restful framework中自动生成API文档
		自动生成api文档(不管是函数视图还是类视图都能显示) 1.安装rest_framework_swagger库 pip install django-rest-swagger 2.在项目下的 urls ... 
- 【转】Django restful framework中自动生成API文档
		转自 https://www.cnblogs.com/sui776265233/p/11350434.html 自动生成api文档(不管是函数视图还是类视图都能显示) 1.安装rest_framewo ... 
- eclipse中自动生成javadoc文档
		使用eclipse生成文档(javadoc)主要有三种方法: 1,在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步. 在 ... 
- apidoc快速生成在线文档,apidoc生成静态文件的生成规则以及原理分析
		在老大的指引下,需要将系统的json文件格式转换成apidoc的json格式,也就是json格式的重组,但是这个apidoc的生成格式是不固定的,因为apidoc有自己一套的生成规则,我需要研究一下是 ... 
- 干掉 Postman?测试接口直接生成API文档,这个工具贼好用
		大家好,我是小富~ 前几天粉丝群有小伙伴问,有啥好用的API文档工具推荐,无意间发现了一款工具,这里马不停蹄的来给大家分享一下. ShowDoc一个非常适合团队的在线API文档工具,也支持用docke ... 
- 浅析如何在Nancy中使用Swagger生成API文档
		前言 上一篇博客介绍了使用Nancy框架内部的方法来创建了一个简单到不能再简单的Document.但是还有许许多多的不足. 为了能稍微完善一下这个Document,这篇引用了当前流行的Swagger, ... 
- 自动把动态的jsp页面(或静态html)生成PDF文档,并且上传至服务器
		置顶2017年11月06日 14:41:04 阅读数:2311 这几天,任务中有一个难点是把一个打印页面自动给生成PDF文档,并且上传至服务器,然而公司框架只有手动上传文档,打印时可以保存为PDF在本 ... 
- Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api
		本文作者:小雷FansUnion-一个有创业和投资经验的资深程序员-全球最大中文IT社区CSDN知名博主-排名第119 实际项目中非常需要写文档,提高Java服务端和Web前端以及移动端的对接效率 ... 
- Spring Boot 2.x基础教程:Swagger静态文档的生成
		前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了.如果您还不熟悉这块,可以先阅读: Spring Boo ... 
随机推荐
- 实验吧-杂项-MD5之守株待兔(时间戳&python时间戳函数time.time())
			其实也有点蒙圈,因为从没做过和时间戳有关的题. 打开网站,将系统密钥解密得到一串值,而自己的密钥解密是空的,既然说是要和系统匹配,就把解密得到的值以get方式送出去. 但是发现还是在自己的密钥也发生了 ... 
- bool盲注中用到的截取字符串的函数(mid、substr、left)
			介绍一下常用的:mid.substr.left 1.mid()函数 此函数为截取字符串一部分.MID(column_name,start[,length]) 参数 描述 column_name 必需. ... 
- hdu 1950  Bridging signals 求最长子序列 ( 二分模板  )
			Bridging signals Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ... 
- mysql多表关联更新
			update 表A inner join 表B on 表A.关联字段 = 表B.关联字段 set 表a.待更新字段01 = 表B.字段01 , 表a.待更新字段021 = 表B.字段02 where ... 
- ZOJ - 3123 Subsequence (滑动窗口)
			题意:给定N个数,求和大于等于S的最短连续子序列的长度. 分析:滑动窗口即可.两种写法. 1. #include<cstdio> #include<cstring> #incl ... 
- POJ 1126:Simply Syntax
			Simply Syntax Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5264 Accepted: 2337 Des ... 
- Arduino - Nano针脚分配时需要注意的事项
			0.1为Rx.Tx 针脚,这两个针脚一般作为串口使用,非串口设备尽量不占用该针脚.2.3为中断口,分别对应中断0.中断1,需要中断功能的设备,必须接入此.2-13.A0-A5,共18个针脚,都可以作为 ... 
- my97datepicker实现日期改变立刻触发函数
			<input type="text" class="Wdate" onclick="WdatePicker({onpicking:functio ... 
- JPA 开发中遇到的错误
			JPA 开发中遇到的错误 (2011-07-13 16:56:12) 转载▼ 标签: 杂谈 分类: Java/J2EE 常见异常1.异常信息:org.hibernate.hql.ast.QuerySy ... 
- 吴裕雄--天生自然TensorFlow2教程:张量限幅
			import tensorflow as tf a = tf.range(10) a # a中小于2的元素值为2 tf.maximum(a, 2) # a中大于8的元素值为8 tf.minimum(a ... 
