zoukankan      html  css  js  c++  java
  • swagger生成离线文档记录(支持中文)

    本档中的附件需要到有道云笔记的分享中下载:
    https://note.youdao.com/ynoteshare1/index.html?id=78031789325c5a5a9926818bbfe9a22e&type=note
     
    一、IDE为idea,使用maven构建的spring-boot工程,swagger版本为2.7.0
     
    二、拷贝docs目录、fonts目录与themes目录到src目录下,fonts与themes是解决中文字体丢失的关键
     
    三、拷贝测试类到test目录下,注意测试类的包路径与项目启动类的包路径一致,否则需要手动指定
     
    四、修改pom.xml,加入文档需要的依赖与插件配置,以下为参考的pom:
     
    五、运行mvn test
     
    六、查看生成的文档,如果想要word文档,需要用转换工具进行转换
     
    以下为文档效果:
     
     
    七、过程中遇到的问题:
     
    1. 单元测试类与项目启动类包路径不一致,导致无法运行单元测试
    2. 添加loback.xml后无法加载,改为logback-spring后可以,在参考的demo中无此问题
    3. <skipTests>true</skipTests> 要改为false或者注释掉
    4. 其他各种小问题,这个文档是测试成功后整理的,未全部记录
    5. 如果有做接口分组,需要指定组名称

    MvcResult mvcResult = this.mockMvc.perform(get("/v2/api-docs? group=open-api")
    .accept(MediaType.APPLICATION_JSON))
    .andExpect(status().isOk())
    .andReturn();


     
    八、生产环境使用建议:
     
    1. 整理了个用于生产环境生成离线文档的模板项目,比如本文档中的附件
    2. 复制一份用于生成文档的工程
    3. 参考本文档,生成接口离线文档(pdf/html),如果不需要生成所有接口的文档,则在swagger的配置类中指定
    4. 文档生成后,确认正确即可删除此次的使用的工程
     
     
    附录:
     
    能正确运行的案例:
     
    # swagger2pdf
     
    使用springBoot + springFox + swagger2markup + asciidoctorj-pdf,生成HTML和PDF格式的接口文档,也解决了PDF文档中文显示为空白的问题。
     
    关于本项目的一些其他信息,可以看我的[这篇博客](https://blog.csdn.net/u013719669/article/details/80998225)。
     
    # 实现原理:
     
    1. 先利用`SpringFox`库生成`RESTful API`
    2. 再利用`Swagger2Markup` Maven插件生成`asciidoc`文档
    3. 最后利用`asciidoctor` Maven插件生成 html 或 pdf 文件
     
    # 如何使用本项目
     
    先下载本项目到本地,导入`eclipse`,等待`maven`下载完依赖的`jar包`,即可使用。运行时只需要在项目上右击-->`Run As`-->`Maven clean`-->在项目上右击-->`Run As`-->`Maven test`,只要控制台显示成功,在当前项目的`targetasciidochtml`和`targetasciidocpdf`分别存放着`HTML文档`和`PDF文档`。
     
    > 注意:其他IDE工具没有试过,如需使用,请自行研究。
     
    # 其他说明
     
    为了本项目使用方便,不建议将要生成文档的项目源码整合到本项目,这样做比较麻烦,需要每个项目都加。
     
    比较好的做法是:
     
    - 首先你的项目要确保是`spring boot`的,并且集成了`swagger`,接口层和入参出参实体类加了`swagger`的相关注解,且能正确跑起来;
    - 然后将本项目的`src/test/java`下`com.example.swagger2pdf`中的`Swagger2PdfTest`类中的注释放开,将生成当前项目的`swagger.json`的代码注释掉,将`url`中的`ip`和`port`换成自己要生成文档的项目的`ip`和`port`,这里要确保这个`url`直接访问有数据返回,不然是无法生成文档的;
    - 最后按上面说的运行项目即可生成文档。
  • 相关阅读:
    mybatis
    mybatis
    hadoop完全分布式搭建
    用构造器确保初始化
    HashMap的内部结构与hash冲突
    方法重载 与 方法覆盖
    Django后台管理admin或者adminx中使用富文本编辑器
    Celery在Django中的使用介绍
    django.db.utils.InternalError: (1060, "Duplicate column name 'user_id'")迁移报错解决方法
    Django2.0版本以上与pymsql 不匹配问题以及解决方法
  • 原文地址:https://www.cnblogs.com/weijs/p/11556086.html
Copyright © 2011-2022 走看看