首页 > 其他分享 >API 设计: RAML、Swagger、Blueprint三者的比较

API 设计: RAML、Swagger、Blueprint三者的比较

时间:2022-12-13 21:00:26浏览次数:81  
标签:Blueprint Markdown RAML API 文档 Swagger

API设计工具中常常会拿RAML、Swagger、Blueprint这三种工具进行讨论比较,它们都是用来描述和辅助API开发的,只是它们之间的侧重有所不同。

RAML

RAML(RESTful API Modeling Language 即 RESTful API 建模语言)是对 RESTful API的一种简单和直接的描述。它是一种让人们易于阅读并且能让机器对特定的文档能解析的语言。RAML 是基于 YAML,能帮助设计 RESTful API 和鼓励对API的发掘和重用,依靠标准和最佳实践从而编写更高质量的API。通过RAML定义,因为机器能够看得懂,所以可以衍生出一些附加的功能服务,像是解析并自动生成对应的客户端调用代码、服务端代码 结构, API说明文档。

上面这段引用自网络,这是我见到的对RAML最清晰的描述了。RAML本质上可以理解为一种文档的书写格式,这种格式是特别针对API的,就像Markdown是针对HTML的一样。并且RAML也同样具备了像Markdown那样的可读性,即使是看RAML源码也能很快明白其意图。另外基于RAML语言,有不少辅助API开发的工具,这里特别推荐一下​​raml2html​​​与​​api-console​​​,它们都可以将raml源文件转换成精美的doc文档页面,其中​​raml2html​​​转换结果是静态的,​​api-console​​则可以生产可直接交互的api文档页面,有些类似后面要说的Swagger。

raml2html输出的文档

API 设计: RAML、Swagger、Blueprint三者的比较_API

api-console生成的结果,可以直接在线编辑RAML后解析,也可以给出RAML文件远程读取解析

API 设计: RAML、Swagger、Blueprint三者的比较_API_02

 

API 设计: RAML、Swagger、Blueprint三者的比较_API_03

 

Swagger

Swagger与RAML相比,RAML解决的问题是设计阶段的问题,而Swagger则是侧重解决现有API的文档问题,它们最大的不同是RAML需要单独维护一套文档,而Swagger则是通过一套反射机制从代码中生成文档,并且借助ajax可以直接在文档中对API进行交互。因为代码与文档是捆绑的所以在迭代代码的时候,就能方便的将文档也更新了。不会出现随着项目推移代码与文档不匹配的问题。另外Swagger是基于JSON进行文档定义的。

Swagger生成的文档

API 设计: RAML、Swagger、Blueprint三者的比较_Markdown_04

 

 

API Blueprint

API Blueprint是使用Markdown来定义API的,Markdown相比前面两个RAML、JSON门槛又降低了一大截。同时API Blueprint与前面的Swagger、RAML一样也能提供可视化的文档界面与Mock Server的功能。不过其Mock能力比较弱。

API 设计: RAML、Swagger、Blueprint三者的比较_RAML_05


API 设计: RAML、Swagger、Blueprint三者的比较_RAML_06

 

工具就是这样的,具体到使用还得看你的应用场景,对于个人开发,小项目我比较喜欢Swagger,代码与文档一同维护省太多事儿了,但对于团队开发,使用RAML这种建模语言进行设计与沟通是不错的选择,并且RAML的Mock和文档能力也不弱,麻烦就在于增加维护成本,不过既然都团队了这个也就不是什么问题了。至于API Blueprint说实话没怎么用过,不过感觉用Markdown挺美好的。

-完-

你还可以看:

​Rails: 使用Swagger来维护Grape API文档​

 

参考引用

​http://www.wtoutiao.com/p/1034TaC.html​

 



标签:Blueprint,Markdown,RAML,API,文档,Swagger
From: https://blog.51cto.com/u_15147537/5935120

相关文章

  • 2022-12-13 h5跳转小程序时传递参数报错:errMsg: openapi.urlscheme.generate:fail inv
    原因:参数格式错误。我的传参中包含了一些中文字符,这在微信的文档里可以看到是不允许的,见下文:通过scheme码进入小程序时的query,最大1024个字符,只支持数字,大小写英文以......
  • DRF自动生成接口文档:coreapi和Swagger
    我们在开发完一个接口后,RESTframework可以自动帮助我们生成接口文档,我们只需要简单设置即可。下面介绍coreapi和Swagger这两种。一、coreapi1、安装依赖pipinstallc......
  • 使用 CNG API 生成伪随机数
    //////File:RandomNumGeneration.cpp////Contents:ThissampleshowsrandomnumbergenerationinCNG.////#defineWIN32_NO_STATUS#in......
  • API Hooking revealed part 3 and 4 - Thread Deadlock Detector
    APIHookingrevealedpart3and4-ThreadDeadlockDetector Downloadsourcefiles-124KbDownloaddemoproject-225KbIntroductionThisi......
  • 通过API操作阿里云ECS(开关机)
    场景:定时开关机ECS,节省模式关机完整代码示例官方链接:https://next.api.aliyun.com/api-tools/sdk/Ecs?version=2014-05-26&language=go-tea关机:https://next.api.aliyun......
  • 非maven项目使用阿里云短信服务API
    不说废话,先上代码单发/***单发短信*@paramphone手机号*@paramcode模板code*@return*@throwsClientException*/......
  • vue全局API
    ​​Vue.extend(options)​​参数:​​{Object}options​​用法:使用基础Vue构造器,创建一个“子类”。参数是一个包含组件选项的对象。​​data​​​ 选项是特例,需要注......
  • 对vue的api的研究
    ​​Vue.config​​ 是一个对象,包含Vue的全局配置。可以在启动应用之前修改下列属性:​​silent​​类型:​​boolean​​默认值:​​false​​用法:Vue.config.silent=tru......
  • 给ASP.NET Core WebAPI添加Swagger支持
    ASP.NETCoreWebAPI是开发WebAPI接口的有利武器,且由于拥有.NETCore的基因支持跨平台,是当前.NET中开发接口的有利武器。但一般来说WebAPI接口开发完毕后,在发布前还需要测......
  • 优雅的API接口设计
    前言在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台API接口,或者提供API接口给第三方平台调用。那么问题来了,如果设计一个优雅的API接口,能够满足:安全......