比较Java REST文档框架

确定在记录REST API时选择哪种Java框架可能很麻烦。 在本博文中,我们将简要比较我们自己使用的REST Web服务的三种文档框架,以及它们如何与Spring框架(这是Foreach最常使用的Java框架)集成。 这些是RESTful API建模语言(RAML),Swagger UI和Spring REST Docs。

在每一部分中,我们将对所讨论的文档框架进行高层概述。 我们将简要描述文档框架如何与Spring集成以及如何在您的文档中使用该框架影响构建周期。

RESTful API建模语言(RAML)

Java框架

RAML是一个单独的文档,与您作为开发人员需要手动维护的项目一起保存。 在默认的RAML配置中,几乎不会自动执行任何操作。 但是,借助随附的插件生态系统,很容易扩展RAML使其表现出所需的行为。

该文档框架的生态系统非常活跃,其插件启用了各种功能,例如:

  • API Workbench :“一个用于设计,构建,测试,记录和共享RESTful HTTP API的丰富,功能齐全的集成开发环境(IDE)”;
  • RAML Java客户端生成器 :根据RAML文档自动生成Java客户端的工具;
  • RAML2HTML :一种Node.js工具,用于生成用户友好HTML文档。

在构建过程中定义的额外步骤中,书面文档将从RAML格式转换为人类可读的文本(或HTML)。

过去,RAML曾经是Java中我们首选的文档框架,但是现在我们发现了一些替代方案,因此开始越来越少地使用RAML。 另外,使用RAML很难编写也易于使用的完整文档(因为RAML中的所有文档都需要手动编写)。 此外,我们通常会在对API进行调整后忘记更新文档。 通过使用一个框架可以解决此问题,在该框架中,大多数API更改都是自动记录的,而不是手动记录的。

招摇UI

相反,Swagger UI会自动生成所有内容。 在此框架中,Swagger与Swagger UI和Springfox协同工作以在运行时生成文档。 该框架包含三个组件:

Java框架
  • Swagger是规范的一部分:一组描述RESTful服务的规则(与RAML相当);
  • Swagger UI是呈现部分:它呈现用户友好HTML(就像RAML2HTML一样),并允许用户在没有任何客户端基础结构的情况下测试服务,因为它会基于Swagger服务规范自动生成测试客户端;
  • Springfox是“生成”部分:它与服务交互(通过注释,包括它自己的注释和Spring注释),以在运行时自动生成文档。

这三个组件将检查您的代码以确定需要记录的内容。 他们既可以生成文档(通过动态网站),也可以通过Swagger UI进行“测试服务调用”。 服务调用的工作方式与例如Postman相同,唯一的区别在于,该库可以通过从应用程序的文档化部分向服务发送原始请求来在浏览器中工作。

由于Springfox将在运行时负责生成,因此无需定义额外的构建步骤(与RAML和Spring REST Docs不同,在其中需要单独的构建步骤)。

当我们第一次开始使用它时,Swagger堆栈似乎很棒。 我们几乎没有(人工)劳动,因为一切都是自动生成的。 同时,我们仍然可以通过在代码中添加注释来调整文档。 我们认为,这既是优点也是缺点。 因为虽然Swagger UI确实易于使用,但是我们对生成的文档的控制没有我们想要的那么多。

Spring REST文件

Spring REST Docs是Spring生态圈的一部分,可根据您的单元测试生成AsciiDoc片段。 这些片段可以包含在手写的AsciiDoc中,以为您的API汇编文档。

Java框架

为此,您可以指定希望从对MockMVC端点的调用中检索的字段,并定义要在文件系统上创建生成的代码段的位置。 如果期望的字段与结果不完全一致,则您的测试将失败,这意味着与文档相关的单元测试也将作为代码的额外检查。

在构建过程的后期,您将需要定义一个额外的步骤,通过将生成的代码片段与手写索引页结合起来,生成人类可读HTML文件,从而促进文档的传播。

我们在一个项目中使用了Spring REST Docs,该项目需要外部参与者使用API​​和常规文档。 他们使用自己的测试工具,因此不希望为他们提供基于浏览器的界面来测试该界面。 我们之所以选择REST Docs框架,是因为(a)它也可以成为我们集成测试的一部分,并且(b)我们可以轻松地将其与所有其他非技术性文档结合在一起。

总览

Java框架

如您所见,“最佳”文档框架取决于您期望文档框架能够完成的工作。 如果您希望不需要大量的“静态”文档(即,如果可以自动生成所有内容),则开箱即用即可轻松使用Swagger UI。

另一方面,如果您需要提供单个文档,或者只想对文档进行更多控制,则最好使用RAML或Spring REST Docs之类。 而且,已经证明与Spring REST Docs中的测试集成非常有用。

无论您选择什么,每个单独的框架都足以以明确的方式将Web服务的合同传达给其他开发人员-这最终是这些框架的目标。

翻译自: https://www.javacodegeeks.com/2019/01/comparing-java-documentation-frameworks.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 获取文件最后几行,php获取文件的最后N行数据

本篇文章介绍的内容是php获取文件的最后N行数据,现在分享给大家,也可以给有需要的朋友一个参考GitHub源码代码是基于以下问题,给出的解决方案:用php写一个函数,获取一个文本文件最后$n行内容,要求尽可能效率…

jaVa游戏三国志英杰传,《三国志英杰传》到底是怎样的一款游戏

原标题:《三国志英杰传》到底是怎样的一款游戏介绍作为PC平台上经典的战棋策略类游戏,英杰传系列可谓把这一类型游戏在战略性和资源获取上的精髓发挥的淋漓尽致。系列初代的《三国志英杰传》诞生在1995年的DOS系统上,虽然我接触英杰传时已经是…

jvm 内存镜像_镜像镜像–使用反射在运行时查看JVM内部

jvm 内存镜像开发人员:Takipi会告诉您何时新代码在生产中中断– 了解更多 我们都习惯于在我们的日常工作中直接或通过利用反射的框架来运用反射。 它是Java和Scala编程的主要方面,它使我们使用的库可以与我们的代码进行交互,而无需对其进行硬…

【渝粤题库】广东开放大学 微信平台开发与应用 形成性考核 (2)

选择题 题目: 以下哪些功能是属于微信的? 题目: 认证过的订阅号的底部是否可以直接链接到外部链接? 题目: 下面哪些属于页面前端开发技术? 题目: 那种情况下的公众号可以申请微信支付&#xff1…

php微信小程序获取用户信息,微信小程序获取openid及用户信息的方法

本文主要介绍微信小程序如何获取openid及用户信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。1. 获取openid1.1 获取code调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid…

【渝粤题库】广东开放大学 服务标准化 形成性考核

​👉关注我,看答案👈 选择题 题目:以下关于本课程终考的描述正确的是? 题目:以下哪种方式能判断已发布的形考是否都做了? 题目:作为专业方向课,本课程最后的总成绩应该达到多少才不影…

谁去过顽皮,谁去过尼斯? 圣诞老人为您提供Java 11建议!

有没有想过圣诞老人如何为世界各地的孩子们送上节日礼物? 有20亿个孩子,每个孩子都有自己的愿望清单,他会在24小时内完成。 这意味着每个孩子平均需要43微秒,他需要检查每个孩子是否顽皮或好。 您无需再怀疑了。 我会透露这个秘密…

php时间格式函数,PHP函数之日期时间函数date()使用详解_php基础_脚本

$ttime();echo date("Y-m-d H:i:s",$t);第一个参数的格式分别表示:a - "am" 或是 "pm"A - "AM" 或是 "PM"d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"D - 星期几…

【渝粤题库】广东开放大学 物业财税管理基础 形成性考核

选择题 题目:企业将资金以购买债券、提供借款或商业信用等形式出借给其他单位,这是一种( )的财务关系。 题目:( )是指买卖双方成交后,在双方约定的未来某一特定的时日才交割的交易市…

【渝粤题库】广东开放大学 统计基础 形成性考核

选择题 题目: 对某城市工业企业未安装设备进行普查,总体单位是( )。 选择一项: 题目: 某地"国内生产总值”这一统计指标属于( )。 选择一项: 题目&…

java无符号 uuid,java实现无符号数转换、字符串补齐、md5、uuid、随机数示例

package com.hongyuan.test;import java.security.messagedigest;import java.security.nosuchalgorithmexception;import java.util.random;import java.util.uuid;/** 杂项(无符号数转换,字符串补齐,md5,uuid,随机数)*/public class sundrytest {//转成…

【渝粤题库】广东开放大学 质量管理 形成性考核

​👉关注我,看答案👈 选择题 题目:可以通过哪些形式登陆学校的课程平台进行学习? 题目:以下关于课程勋章的说法,哪些是“正确”的? 题目:在“疑难解答区”发帖时,哪种类型…

play框架配置 拦截器_如何使用Play框架为https配置SSL证书

play框架配置 拦截器我花了几个小时试图使它起作用,最后,问题是我自己没有使用keytool生成CSR(证书请求)。 当我尝试通过https访问Play时,我一直收到此错误: javax.net.ssl.SSLPeerUnverifiedException&a…

【渝粤题库】陕西师范大学100141大学英语(三)作业 (专升本、高起本)

交际与对话 针对每个对话中未完成的部分有4个选项,请从A、B、C、D四个选项中选出正确选项。 a. What do you think of the speech given by Professor Smith? b. . But I’m not particularly interested in the topic. A. Let me think about it. B. Not bad. C.…

webmin升级php,Webmin php-lib.pl修改

我已经将PHP版本更新到5.5.26。使用PHP 5.4,我使用FCGI的Apache配置是:AddHandler fcgid-script .phpAddHandler fcgid-script .php5使用新版本的PHP我需要把其他配置工作:SetHandler fcgid-script没关系,它的工作。我的问题是与W…

【渝粤题库】陕西师范大学151211 税法与纳税会计 作业(专升本)

《税务与纳税会计》作业 一、单选题 以下关于纳税主体的表述中正确的是( )。 A. 纳税会计纳税主体和财务会计中的“会计主体”相同 B. 会计主体都是纳税主体 C. 纳税主体不一定是会计主体 D. 纳税主体一定是会计主体 下列项目中属于纳税人权利的是&…

java代码上传exel,excle上传服务器并解析!求excel上传到服务器的java代码

如何将数据上传给服务器医嘱以形式发送过来? 办法有很多,最简单的,就是在机器里,建立2个数据库A,B,假如A是外务器。 在数据库中,以A数据库做发布,让B数据库订阅,弄好以后&#xff0c…

Java中的Fork / Join框架的简要概述

Fork / Join框架是使用并发分治法解决问题的框架。 引入它们是为了补充现有的并发API。 在介绍它们之前,现有的ExecutorService实现是运行异步任务的流行选择,但是当任务同质且独立时,它们会发挥最佳作用。 运行依赖的任务并使用这些实现来组…

【渝粤题库】陕西师范大学163106旅游心理学 作业【专升本】

陕西师范大学 内 部 题 库 教育 (yuyueshool) 编制 陕西师范大学 内 部 题 库 教育 (yuyueshool) 编制 《旅游心理学》作业 一、单选题 1、旅游心理学是心理学的一个分支学科,这句话正确与否?( &#x…

【渝粤题库】陕西师范大学164204 供应链与物流管理 作业

《供应链与物流管理》作业 一、单选题 1、是围绕核心企业,通过对信息流、物流、资金流的控制,从采购原材料开始,制成中间产品以及最终产品,最后由销售网络把产品送到消费者手中的将供应商、制造商、分销商、零售商、直到最终用户…