跟着JHipster学做项目(2) - 使用Swagger2生成API文档 (上)生成swagger的asciidoc文件

使用JHipster进行Java API快速开发 在创建项目后,我们需要定义我们的实体模型。JHipster使用JDL(JHipster Domain Language)来定义实体。创建一个名为jdl.jh的文件,并按照以下示例定义一个名为Book这将生成与实体相关的Java类、数据库表和API端点等。 阅读详情

JHipster的提示和技巧页面中第一个技巧就是:

  1. Create a static Swagger API documentation   

虽然篇头已经提示我们要去看swagger2markup最新模块,不要理会下面的内容,但是看着下面仅仅三步便可以生成API文档还是会想先按照提示尝试一下,于是利用maven引入springfox-staticdocs

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-staticdocs</artifactId>
    <version>${springfox.version}</version>
    <scope>test</scope>
</dependency>

然而在执行Swagger2MarkupTest后成功遇到issue 289,详情请参见swagger2markup-issues-289

按照问题描述应该引入swagger2markup- 1.3.3来取代spring-staticdocs的依赖包swagger2markup- 0.9.2

在spring-swagger2markup-demo中,为了升级需要在maven中添加两个repository

    <repositories>
        <repository>
            <id>jcentral</id>
            <name>bintray</name>
            <url>http://jcenter.bintray.com</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>jcenter-snapshots</id>
            <name>jcenter</name>
            <url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
        </repository>
    </repositories>

这里会有一点小困扰,jar包无法下载,需要修正两个url,改为https, 另外当通过修改pom.xml文件进行jar包下载出错后,执行mvn install是一个比较好的办法,通常会自动下载缺失的依赖。

对于spring-swagger2markup-demo项目执行mvn install会成功生成swagger文件,以及由asciidocs插件生成的html, pdf文档。但是不满足于demo中Swagger2MarkupTest只生成了swagger.json文件,我们还想像JHipster技巧中那样直接生成swagger的asciidoc文件,一般包括四个部分,overview, paths, definations, security. 

	public void convertSwaggerToAsciiDoc() throws Exception {
		this.mockMvc.perform(get(API_URI).accept(MediaType.APPLICATION_JSON))
				.andDo(new ResultHandler() {
					@Override
					public void handle(MvcResult result) throws Exception {
						String swagger = result.getResponse()
								.getContentAsString();
						Swagger2MarkupConverter.from(swagger).build().toFolder(
								Paths.get(outputDirForFormat("asciidoc")));
					}
				}).andExpect(status().isOk());
	}

运行仍然如前面一样报issue289,no getDefaultValue() method.

查看依赖发现demo中swagger2markup的版本是1.2.0,利用eclipse的功能右键点击maven,如下图自动根据依赖排除1.2.0版本,再引入1.3.3版本。

排除旧版本jar包

		<dependency>
			<groupId>io.github.swagger2markup</groupId>
			<artifactId>swagger2markup</artifactId>
			<version>1.3.3</version>
            <scope>test</scope>
		</dependency>
        <dependency>
            <groupId>io.github.swagger2markup</groupId>
            <artifactId>swagger2markup-spring-restdocs-ext</artifactId>
            <version>${swagger2markup.version}</version>
            <scope>test</scope>
            <exclusions>
            	<exclusion>
            		<groupId>io.github.swagger2markup</groupId>
            		<artifactId>swagger2markup</artifactId>
            	</exclusion>
            </exclusions>
        </dependency>

再次执行,issue289成功消失,但是出现另外一个缺失snippetBaseUri的错误。解决这个问题有两种方法:

第一,直接去掉依赖swagger2markup-spring-restdocs-ext

SpringRestDocsExtension作为PathsDocumentExtension的扩展类,也会被注册,它没有默认配置,所以会报错。

第二,对converter进行配置,代码如下:

@Test
    public void createSpringfoxSwaggerJson() throws Exception {
//        String designFirstSwaggerLocation = Swagger2MarkupTest.class.getResource("/swagger.yaml").getPath();

//        String outputDir = System.getProperty("io.springfox.staticdocs.outputDir");
    	String outputDir = outputDirForFormat("asciidoc");
        config.put("swagger2markup.markupLanguage", "ASCIIDOC");
        config.put("swagger2markup.pathsGroupedBy", "TAGS");
        config.put("swagger2markup.extensions.dynamicOverview.contentPath", outputWaggerDirForFormat("src/docs/asciidoc/extensions/overview"));
        config.put("swagger2markup.extensions.dynamicDefinitions.contentPath", outputWaggerDirForFormat("src/docs/asciidoc/extensions/definitions"));
        config.put("swagger2markup.extensions.dynamicPaths.contentPath", outputWaggerDirForFormat("src/docs/asciidoc/extensions/paths"));
        config.put("swagger2markup.extensions.dynamicSecurity.contentPath", outputWaggerDirForFormat("src/docs/asciidoc/extensions/security/"));
        config.put("swagger2markup.extensions.springRestDocs.snippetBaseUri", outputWaggerDirForFormat("target/asciidoc/snippets"));
        config.put("swagger2markup.extensions.springRestDocs.defaultSnippets", "true");

        Swagger2MarkupConfig swagger2MarkupConfig = new Swagger2MarkupConfigBuilder(config).build();
        MvcResult mvcResult = this.mockMvc.perform(get("/v2/api-docs")
                .accept(MediaType.APPLICATION_JSON))
        						.andDo(new ResultHandler() {
				@Override
				public void handle(MvcResult result) throws Exception {
					String swagger = result.getResponse()
							.getContentAsString();
					Swagger2MarkupConverter.from(swagger).withConfig(swagger2MarkupConfig).build().toFolder(
							Paths.get(outputDirForFormat("asciidoc")));
				}
			}).andExpect(status().isOk()).andReturn();
        

        MockHttpServletResponse response = mvcResult.getResponse();
        String swaggerJson = response.getContentAsString();
        Files.createDirectories(Paths.get(outputDir));
        try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(outputDir, "swagger.json"), StandardCharsets.UTF_8)){
            writer.write(swaggerJson);
        }
    }

Good luck,

Cheers!

 

使用swagger2markup生成漂亮的PDF和HTML文档(完整工程,解压即用) 最近开发时需要用swagger生成文档,经多次测试,形成了一个完整的生成方案,供大家参考。可以在生成的文档中处定义章节。完整调试,保证可用。 工程后,操作步聚如下: 1、修改生成最终文档的索引文件index.adoc,在src/docs/asciidoc目录中,根据自己需要添加章节 2、修改pom.xml的30行地址,改为需要生成文档的系统地址 3、使用命令:mvn clean test 生成接口手册文档 4、生成的的文档路径如下: target\asciidoc\html target\asciidoc\pdf 立即下载

相关推荐

解决Surface更新后Bitlocker无限循环的问题

在Surface系统更新以后,出现要求输入Bitlocker恢复密钥的问题。已经输入正确密钥以后,依然无法正常进入Windows操作系统,一旦重启依然循环Bitlocker要求输入密钥的界面。 一旦到登录界面,点击“登录”之后又跳转回登录界面.,但就是无法进入桌面。 解决方案: 拒绝暴力重装!这个问题是Bitlock把盘给锁了,所以要解锁 重启之后,直接点击右下角“跳过这个驱动器” 选择“疑难解答”,然后进入命令提示符 先查看判断现在是不是被锁了: 输入: manage-bde -status c

premierapp的博客 1万+

跟着JHipster学做项目 (7) swagger-ui展现

前面讲过使用Swagger2生成API文档,这里是关于直接在浏览器中展示API,并且可以在线测试API。着重从三个方面来概括一下swagger-ui展现: Spring Boot端如何启动swagger, 使后端可以接收/v2/api-docs和/swagger-resources请求,并返回相应的response(swagger.json, {url, name}). swagger-ui的前端代码生成 Spring Boot后端和Vue前端如何处理请求的权限 JHipster通过引入jhipst

java_augur的专栏 1861

Qt加载百度地图详细流程(附带报错解决方法)

一篇文章看懂Qt如何加载出百度地图......

qq_60018273的博客 1604

JHipster 纯后端怎么替换原生swagger并在swagger配置jwt验证

最近刚入手学习JHipster,项目要进行完全的前后端分离,在jhipster --skip-client生成开发环境后,在完全脱离前端的情况下,想要通过类似Spring-boot后端配置swagger来进行API接口展示和调用测试 &lt;dependency&gt; &nbsp; &nbsp; &lt;groupId&gt;io.springfox&lt;/groupId&gt; &nb...

u013594885的博客 1536

2021 buaa 计组上机P0 logisim 3道课上考试题

每年题目都不一样,但看看往年题可以帮助查缺补漏 第一题:组合逻辑设计 4人(1个组长和3个组员)对议题进行投票表决。组长有一票否决权。如果组长一票否决,则议题被否决。如果组长正常投票(同意、反对或者弃权),则统计同意的人数和反对的人数。当同意人数大于反对人数,则议题通过,否则议题被否决。 请设计组合逻辑电路,实现这样子的一个投票表决器 同意 反对 弃权 一票否决 组长信号 00 01 10 组员信号 00 01与11 10 第2题 时序逻辑电路设计 设计一个Mealy型电路,若序列的

weixin_41892813的博客 3456

SQL注入-靶场通关 Less 1-21

打开Burp工具--打开内嵌浏览器--进入靶场第六关--打开拦截--输入?id=1',如果是正确的,说明不存在注入点,如果错误,说明存在注入点,这里是错误的,需要加上注释--+,在回车看结果是正确的,说明找到了注入点。工具,打开内嵌浏览器,打开拦截,输入http://127.0.0.1/sqli-labs-master/Less-9,然后发送到。id=1'--+,后面都注释了,单引号不闭合,报错说明是数字型SQL注入。设置休眠时间为10s,如果执行SQL语句就会加载,说明正确,存在注入点。

weixin_72104324的博客 1392

jhipster中聚合微服务Swagger文档的实现

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34060299的博客 458

保姆级教程:用Python仿真OFDM系统(附抗多径干扰优化方案)

本文提供了一份详细的Python仿真OFDM通信系统教程。通过NumPy和Matplotlib,从二进制比特流开始,逐步构建完整的OFDM系统模型,涵盖IFFT、循环前缀等核心概念。重点探讨了如何对抗多径干扰,并提供了优化方案,通过误码率曲线直观对比性能,适合通信工程学习和物理层开发实践。

weixin_29230649的博客 232

跟着JHipster学做项目(3) - Maven的使用技巧(下)去掉因lifecycle引起的红叉

当我们在项目中引入swagger或者asciidoc等插件时,通常定义在generate-sources阶段执行,当使用eclipse时,pom.xml就会出现一个红叉,以swagger2markup-maven-project-template项目为例,克隆这个项目在本地,将项目引入到eclipse, 这个问题虽然不影响项目的编译以及运行,但是这个红叉不仅会引起视觉的不适,也实际会影响我们...

java_augur的专栏 548

Halcon 简单的形状匹配定位与区域跟随

【代码】Halcon简单的形状匹配定位与区域跟随。

唐大狗 2806

X线DR医学图像 --- DR医用滤线栅及摩尔纹详解 (二) 摩尔纹的产生机理

1,横向摩尔纹的表现 2,纵向摩尔纹的表现 3,摩尔纹在pitch = 143μm(注:pitch为采样间隔/周期)的FPD上的表现。 4,摩尔纹的危害(严重的影响了临床诊断) 5,摩尔纹对胸片肺部肺纹理的破坏 6,滤线栅的频率(滤线栅生产厂家的产品参数)。判断摩尔纹产生的重要依据之一 7,DR平板探测器的采样频率/空间极限分辨率 l.........

松下J27录放机 4981

JHipster---搭建一个简单的JHipster单体应用

前提条件: (1)安装了jdk8 (2)安装了node10 (3)安装了JHipster 验证方式如下: 详细步骤如下: 1、打开CMD,在D盘创建一个文件,然后开始创建JHipster应用 C:\Users\PC-8813>d: D:\>mkdir JHipsterDemo D:\>cd JHipsterDemo D:\JHipsterDemo&g...

小梦想的博客 6377

【Unity 实用工具篇】✨| 受击插件Feel 详细教程,开发游戏时更好的操控 游戏打击感

在一个游戏中,游戏手感对于游戏的整体游玩体验是非常重要的,而游戏手感中有一个很重要的点:打击感 那本篇文章就来讲一下打击感中的受击反馈部分。 在游戏中经常会用到攻击敌人,敌人扣血,执行某些受击功能的执行,尤其是对于有战斗场景的游戏来说,这就是标准的受击反馈。 所以引出本篇文章的主角:受击插件 Feel 的使用,2D和3D游戏都可以使用。

努力前行,总会成为自己心中的那道光 3万+

跟着JHipster学做项目(2) - 使用Swagger2生成API文档 (下)生成中文html5, PDF文件

上篇已经通过引入springfox-staticdocs成功生成了swagger的asciidoc文件,用浏览器来查看asciidoc文档需要安装插件,通常我们会进一步把asciidoc文件转化为html5, 或者PDF文档。 主要的功能由asciidoctor-maven-plugin插件完成: <!-- Run the generated asciidoc through Asciidoctor to generate other documentation

java_augur的专栏 512

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Jhipster 创建Demo

创建一个简单的Jhipster Demo , 根据以下步骤可完成简单创建: 创建注册中心: Jhipster官方提供注册中心的源码代码,可以直接运行, 官方注册中心地址:https://github.com/jhipster/jhipster-registry.git git clone https://github.com/jhipster/jhipster-registry.git #根据官方提供的地址克隆文件到本地 文件夹 文件成功克隆到本地文件夹后, 进入该文件夹并按顺序执行以下命令:

darlene2929的博客 322

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

swagger2使用

作者:LoveEmperor-王子様 spring boot项目整合swagger2 背景 通常同学们采用统一编写word接口文档,但有时在不完善的情况下,几个痛点会让人无语: 接口文档规范问题 文档需要实时更新 接口文档太多,不好管理 基于痛点,我们可以采用自动生成文档模式:swagger2、RAP等 简介 代码侵入式注解自动生成api文档(swagge...

你当像鸟飞往你的山~~ 5871

全栈式的Java开发框架JHipster简介(二)

JHipster是全栈式的Java开发框架,集成了目前最流行的技术。   客户端可选择的技术或工具有   服务端可选择的技术或工具有   其中有些技术或是工具是我们熟悉的在使用中的,也有我们不熟悉也是非常流行的。 只是我们没有涉及到相关领域没有用到而已。   快速开始   假设我们已经安装了下面的工具 Java, Git, Node.js, Bower,...

u011791490的博客 278

基于JHipster创建简单Demo

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34130389的博客 384

JHipster介绍:一个适用于Java和JavaScript的全栈框架

JHipster是一个用于生成混合Java和JavaScript应用程序的成熟框架,它支持你所喜爱的开发工具,并提供监控和其他开箱即用的管理功能。JHipster是一个历史悠久、雄心勃勃的Java和JavaScript混合项目,致力于使用现代反应式前端来简化全栈Java应用程序的开发。JHipster开发团队持续发布新版本,以跟上行业变化。让我们通过构建一个简单的应用程序来了解这个框架能做什么。开箱即用,JHipster在前端支持React、Vue和Angular。基于JPA的关系型数据存储,其中。...

Q54665642ljf的博客 1998

(1)FPQuant JHipster_总体配置

本文是对JHipster开发文档的部分翻译,供个人学习之用。 原文链接:https://jhipster.github.io/development/ 总体配置 1.配置IDE--IDEA 导入项目: 正常打开项目会检测到maven,然后自动构建项目 去除包(不一定要执行): 右键node_modules/文件夹选择"Mark Directory As",

raquelle的记忆宫殿 3238

Jhipster框架简介及快速搭建项目

Jhipster是为您生成一个完整的现代Web应用程序或微服务架构: 它使用Spring Boot在服务器端实现高性能和强大的Java堆栈,这是一款时尚,现代,移动优先的前端,配有Angular,React和Bootstrap,一个强大的微服务架构。 1.环境搭建 从Oracle网站安装Java 8 。 从Node.js网站安装Node.js (请使用LTS 64位版本,不支持非LTS版本) n...

chd_sun的博客 2081

JHipster中文文档(一)

介绍 技术栈 客户端技术栈 服务端技术栈 微服务技术栈 生产环境支持 环境设置 安装JHipster 安装方式 使用Yarn进行本地安装 当使用Angular时的快速配置 当使用AngularJS 1.x时的快速配置 其他组件安装 其他问题 Jhipster核心任务 创建一个应用 快速入门 生成应用时的问题 Q1. Which type of application wo...

alleyz 2万+

使用JHipster创建应用程序

创建应用程序 请查看我们关于创建新JHipster应用程序的视频教程! 快速开始 生成应用程序时询问的问题 使用蓝图 命令行选项 提示 快速开始 首先,创建一个空目录,在其中创建应用程序: mkdir myapplication 转到该目录: cd myapplication/ 要生成应用程序,请键入: jhipster 回答生成器提出的问题,以创建适合您需求的应用程序。...

大强博客 1650

如何看待JHipster框架

16 年中深度入坑,用于互联网初创项目 Jhipster 项目,超越了传统的 Web 应用框架的范畴,为 Java Web 开发提供了多种架构和解决方案 谁在用 Google 埃森哲 Adobe heroku 普华永道 西门子...(官网可查) 清单中不仅有著名的互联网公司,还有传统企业的信息部门,可见其影响力 你为什么不试试 思路 Jhipster 开源项目由全球富有经验的

mark's technic world 3491

JHipster简介

JHipster 官网 JHipster或者称Java Hipster,是一个应用代码产生器,能够创建Spring Boot + AngularJS的应用。开源项目地址:JHipster/Github。   JHipster使用Node.js和Yeoman产生Java应用代码,使用Maven(Gradle)运行产生的代码,产生代码有如下关键特征: src/main/java 目录有

ejinxian的专栏 2693
上一篇: 跟着JHipster学做项目(1)- MockMvc用法技巧
下一篇: 跟着JHipster学做项目(3) - Maven的使用技巧(上)分离jar和依赖
java_augur
博客等级 码龄22年 67粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值