api接口文档管理工具有哪些(接口文档 工具)

网友投稿 405 2023-02-14


本篇文章给大家谈谈api接口文档管理工具有哪些,以及接口文档 工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享api接口文档管理工具有哪些的知识,其中也会对接口文档 工具进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

还在发愁写API文档?推荐一款阿里腾讯都在用的API管理神器

作为一个前后端分离模式开发的团队,我们经常会看到这样的场景:前端开发和后端开发在一起热烈的讨论“你这接口参数怎么又变了?”,“接口怎么又不通了?”,“稍等,我调试下”,“你再试试..."。

那能不能写好接口文档,大家都按文档来开发?很难,因为写文档、维护文档比较麻烦,而且费时,还会经常出现 API 更新了,但文档还是旧的,各种同步不一致的情况,从而耽搁彼此的时间。

之前我们团队也遇到了同样的问题,那么作为研发团队的负责人,我是如何带领团队解决这个问题的呢?

方法其实很简单,如果能做到让写文档/维护文档这件事情的短期收益就能远高于付出的成本,那么所有问题都能迎刃而解,开发人员就会非常乐意去写接口文档。

要做到写文档和及时维护文档的短期收益就能远高于付出的成本,无非两个方向:

鉴于此,我们设想如果有一款工具做到以下这些是不是就非常爽了?

总结下来,我们需要的就是这么一款工具:

为此,我们几乎尝遍了市面上所有相关的工具,但是很遗憾,没有找到合适的。

于是,我们自己实现了一个Postman + Swagger + RAP + JMeter

这个工具就是 Apifox,经常很长一段时间不断更新迭代后,我们基本上完全实现了最初的设想,几乎完美解决了最开始遇到的所有问题,在公司内部大受欢迎。并且也形成了我们自己的最佳实践。

没错,现在我们已经将Apifox产品化对外服务了,你们团队也可以直接使用Apifox了。

官网:www.apifox.cn

Apifox = Postman + Swagger + Mock + JMeter

Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台。

通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好接口文档,接口调试、数据 Mock、接口测试就可以直接使用,无需再次定义;接口文档和接口开发调试使用同一个工具,接口调试完成后即可保证和接口文档定义完全一致。高效、及时、准确!

节省研发团队的每一分钟!

如果你认为 Apifox 只做了数据打通,来提升研发团队的效率,那就错了。Apifox 还做了非常多的创新,来提升开发人员的效率。

通常一个接口会有多种情况用例,比如 正确用例 参数错误用例 数据为空用例 不同数据状态用例。定义接口的时候定义好这些不同状态的用例,接口调试的时候直接运行,非常高效。

可以独立定义数据模型,接口定义时可以直接引用数据模型,数据模型之间也可以相互引用。同样的数据结构,只需要定义一次即可多处使用;修改的时候只需要修改一处,多处实时更新,避免不一致。

使用 Apifox 调试接口的时候,系统会根据接口文档里的定义,自动校验返回的数据结构是否正确,无需通过肉眼识别,也无需手动写断言脚本检测,非常高效!

Apifox 自动校验数据结构

设置断言:

Apifox 设置断言

运行后,查看断言结果:

先放一张图对比下 Apifox 和其他同类工具 零配置 mock 出来的数据效果:

Apifox Mock 数据结果对比同类工具

可以看出 Apifox 零配置 Mock 出来的数据和真实情况是非常接近的,前端开发可以直接使用,而无需再手动写 mock 规则。

「Apifox 如何做到高效率、零配置生成非常人性化的 mock 数据」

Apifox 项目可“在线分享” API 文档,分享出去的 API 文档可设置为公开或需要密码访问,非常方便与外部团队协作。

体验地址:https://www.apipark.cn/s/ce387612-cfdb-478a-b604-b96d1dbc511b/http/5041285

根据接口模型定义,自动生成各种语言/框架(如 TypeScript、Java、Go、Swift、ObjectiveC、Kotlin、Dart、C++、C#、Rust 等)的业务代码(如 Model、Controller、单元测试代码等)和接口请求代码。目前 Apifox 支持 130 种语言及框架的代码自动生成。

更重要的是:你可以通过自定义代码模板来生成符合自己团队的架构规范的代码,满足各种个性化的需求。

接口调试

Apifox 多种主题色可选

六大接口管理平台,总有一款适合你的!

先聊一聊前端和后端分离的优点。前后端分离优点如下:

其中不可避免的就是定制好接口文档,后端工程师要写好单元测试,推荐使用 chrome 的插件 postman 或 soapui或 jmeter,service 层的测试用例拿 junit 写。
但是这种情况对于接口文档管理很不方便,所以下面就罗列一些互联网公司常用的接口文档管理平台。

Swagger是一个大型的API开发者的工具框架,该框架提出了一个编写OpenAPI的规范(命名为OAS),并且Swagger可以跨整个API生命周期进行开发,从设计和文档到测试和部署。
Swagger框架三核心:

YApi部署流程介绍

YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。它可以帮助开发者轻松创建、发布、以及维护API。除此之外,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。特性:

难点:如果需要要执行自动化测试,需要编写脚本。

Eolinker是国内企业级IT研发管理解决方案服务品牌,在线API接口管理服务供应商,致力于满足各行业客户在不同应用环境中对研发管理全生命周期的个性化需求,提供API开发管理(AMS)、开发团队协作、自动化测试、网关(AGW)以及监控(AMT)等服务。
特性:

ShowDoc一个非常适合IT团队的在线API文档、技术文档工具。
随着移动互联网的发展,BaaS(后端即服务)越来越流行。服务端提供API,APP端或者网页前端便可方便调用数据。用ShowDoc可以非常方便快速地编写出美观的API文档。

项目地址: https://www.showdoc.cc

DOClever是一个可视化接口管理工具 ,可以分析接口结构,校验接口正确性, 围绕接口定义文档,通过一系列自动化工具提升我们的协作效率。
特性:

DOClever官网: http://www.doclever.cn/controller/index/index.html
DOClever GitHub: https://github.com/sx1989827/DOClever

阿里妈妈前端团队出品的开源接口管理工具RAP第二代,RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据、校验真实接口的正确性,使接口文档成为开发流程中的强依赖。有了结构化的API数据,RAP可以做的更多,而我们可以避免更多重复劳动。基于RAML的接口定义、文档生成、Mock Server完成了定义和使用的分离,通过一套规范完成的接口定义,可以用不同的工具得到适应不同API管理系统的输出,有更多的可能性,同时保持了核心定义不变。RAP较之于RAML,前者更加集中,所有的定义、文档、mock都在同一个服务中完成,并且实时生效,方便快捷,如果只考虑方便易用,RAP是更好的选择,而RAML显得更加繁琐,更适合于公开的接口定义,方便在各个系统之间流转。

github源码地址: https://github.com/thx/rap2-delos

YAPI:从0搭建API文档管理工具

最近在找一款API文档管理工具api接口文档管理工具有哪些,之前有用过Swagger、API Manager、Confluenceapi接口文档管理工具有哪些,现在用api接口文档管理工具有哪些的还是Confluence。

我个人一直不喜欢用Swagger,感觉“代码即文档”,让代码里的文档无处不在,已经对代码造成api接口文档管理工具有哪些了一定的入侵了。API Manager就是一个纯API文档管理的工具了。Confluence是万能的,也是最简单的,支持各种插件在线安装,可以有各种布局,支持MD文档,也支持表格、代码块等。

最近看到一篇文章在说YAPI,就准备搭建一个试试效果如何。

YAPI是去哪儿网开源的一款API管理工具,理念如下:

特性:

选择YAPI试试手的原因是因为我看到了它支持MockServer,这样前端开发同学就不用等待后端同学了。主要是我也懒得搭建一套mock服务,有这样一款工具何乐而不为呢?所以今天就找了一台服务器安装了一下。考虑排版问题,就以图片形式放出来了。

nodeJS长期支持版本官网下载地址:https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz,下载后执行如下命令:
nodeJS安装完毕。
YAPI安装,GitHub上已经有比较详细的文档了,地址:https://github.com/YMFE/yapi,这里说一下两种部署方式:

可视化部署:
yapi安装完毕,访问进行可视化配置一步一步往下走即可。

命令行部署(推荐方式):
yapi安装完毕,访问:{config.json中配置的port}即可访问。

node需要安装pm2模块,使用pm2模块后台运行yapi:
运行成功页面:
至此,YAPI就安装完毕了,简单实用一下还是不错的,因为是国产的,整体操作风格还是比较习惯的。在YAPI这里接口更改还有记录哦~
后面再慢慢体验这个里面的一些高级功能吧,比如MockServer、接口测试等功能。

大家还有什么更好用的API管理工具?你觉得一款优秀的API管理工具应该都有哪些必须的功能?欢迎推荐和讨论!

现在大公司用的API文档生成工具有哪些?分析下各种工具的优缺点,哪种工具用起来最方便?

在API 经济模式下, IBM提出API 经济解决方案:http://www-01.ibm.com/software/cn/middleware/integration/api-economy.html,其中有专门的API管理和连接的产品,叫API Connect,产品连接是http://www-03.ibm.com/software/products/zh/api-connect

神器 SpringDoc 横空出世!最适合 SpringBoot 的API文档工具来了

之前在SpringBoot项目中一直使用的是SpringFox提供的Swagger库,上了下官网发现已经有接近两年没出新版本了!前几天升级了SpringBoot 2.6.x 版本,发现这个库的兼容性也越来越不好了,有的常用注解属性被废弃了居然都没提供替代!无意中发现了另一款Swagger库SpringDoc,试用了一下非常不错,推荐给大家!

SpringDoc简介

SpringDoc是一款可以结合SpringBoot使用的API文档生成工具,基于OpenAPI 3,目前在Github上已有1.7K+Star,更新发版还是挺勤快的,是一款更好用的Swagger库!值得一提的是SpringDoc不仅支持Spring WebMvc项目,还可以支持Spring WebFlux项目,甚至Spring Rest和Spring Native项目,总之非常强大,下面是一张SpringDoc的架构图。

使用

接下来我们介绍下SpringDoc的使用,使用的是之前集成SpringFox的mall-tiny-swagger项目,我将把它改造成使用SpringDoc。

集成

首先我们得集成SpringDoc,在pom.xml中添加它的依赖即可,开箱即用,无需任何配置。

<!--springdoc 官方Starter--org.springdocspringdoc-openapi-ui1.6.6

从SpringFox迁移

我们先来看下经常使用的Swagger注解,看看SpringFox的和SpringDoc的有啥区别,毕竟对比已学过的技术能该快掌握新技术;

接下来我们对之前Controller中使用的注解进行改造,对照上表即可,之前在@Api注解中被废弃了好久又没有替代的description属性终于被支持了!

/**

* 品牌管理Controller

* Created by macro on 2019/4/19.

*/@Tag(name ="PmsBrandController", description ="商品品牌管理")@Controller@RequestMapping("/brand")publicclassPmsBrandController{@AutowiredprivatePmsBrandService brandService;privatestaticfinalLogger LOGGER = LoggerFactory.getLogger(PmsBrandController.class);@Operation(summary ="获取所有品牌列表",description ="需要登录后访问")@RequestMapping(value ="listAll", method = RequestMethod.GET)@ResponseBodypublicCommonResult getBrandList() {returnCommonResult.success(brandService.listAllBrand());    }@Operation(summary ="添加品牌")@RequestMapping(value ="/create", method = RequestMethod.POST)@ResponseBody@PreAuthorize("hasRole('ADMIN')")publicCommonResult createBrand(@RequestBodyPmsBrand pmsBrand) {        CommonResult commonResult;        int count = brandService.createBrand(pmsBrand);if(count ==1) {            commonResult = CommonResult.success(pmsBrand);            LOGGER.debug("createBrand success:{}", pmsBrand);        }else{            commonResult = CommonResult.failed("操作失败");            LOGGER.debug("createBrand failed:{}", pmsBrand);        }returncommonResult;    }@Operation(summary ="更新指定id品牌信息")@RequestMapping(value ="/update/{id}", method = RequestMethod.POST)@ResponseBody@PreAuthorize("hasRole('ADMIN')")publicCommonResult updateBrand(@PathVariable("id")Longid,@RequestBodyPmsBrand pmsBrandDto, BindingResult result) {        CommonResult commonResult;        int count = brandService.updateBrand(id, pmsBrandDto);if(count ==1) {            commonResult = CommonResult.success(pmsBrandDto);            LOGGER.debug("updateBrand success:{}", pmsBrandDto);        }else{            commonResult = CommonResult.failed("操作失败");            LOGGER.debug("updateBrand failed:{}", pmsBrandDto);        }returncommonResult;    }@Operation(summary ="删除指定id的品牌")@RequestMapping(value ="/delete/{id}", method = RequestMethod.GET)@ResponseBody@PreAuthorize("hasRole('ADMIN')")publicCommonResult deleteBrand(@PathVariable("id")Longid) {        int count = brandService.deleteBrand(id);if(count ==1) {            LOGGER.debug("deleteBrand success :id={}", id);returnCommonResult.success(null);        }else{            LOGGER.debug("deleteBrand failed :id={}", id);returnCommonResult.failed("操作失败");        }    }@Operation(summary ="分页查询品牌列表")@RequestMapping(value ="/list", method = RequestMethod.GET)@ResponseBody@PreAuthorize("hasRole('ADMIN')")publicCommonResult listBrand(@RequestParam(value ="pageNum", defaultValue ="1")@Parameter(description ="页码")Integer pageNum,@RequestParam(value ="pageSize", defaultValue ="3")@Parameter(description ="每页数量")Integer pageSize) {        List brandList = brandService.listBrand(pageNum, pageSize);returnCommonResult.success(CommonPage.restPage(brandList));    }@Operation(summary ="获取指定id的品牌详情")@RequestMapping(value ="/{id}", method = RequestMethod.GET)@ResponseBody@PreAuthorize("hasRole('ADMIN')")publicCommonResult brand(@PathVariable("id")Longid) {returnCommonResult.success(brandService.getBrand(id));    }}

接下来进行SpringDoc的配置,使用OpenAPI来配置基础的文档信息,通过GroupedOpenApi配置分组的API文档,SpringDoc支持直接使用接口路径进行配置。

/**

* SpringDoc API文档相关配置

* Created by macro on 2022/3/4.

*/@ConfigurationpublicclassSpringDocConfig{@BeanpublicOpenAPImallTinyOpenAPI(){returnnewOpenAPI()                .info(newInfo().title("Mall-Tiny API")                        .description("SpringDoc API 演示")                        .version("v1.0.0")                        .license(newLicense().name("Apache 2.0").url("https://github.com/macrozheng/mall-learning")))                .externalDocs(newExternalDocumentation()                        .description("SpringBoot实战电商项目mall(50K+Star)全套文档")                        .url("http://www.macrozheng.com"));    }@BeanpublicGroupedOpenApipublicApi(){returnGroupedOpenApi.builder()                .group("brand")                .pathsToMatch("/brand/**")                .build();    }@BeanpublicGroupedOpenApiadminApi(){returnGroupedOpenApi.builder()                .group("admin")                .pathsToMatch("/admin/**")                .build();    }}

结合SpringSecurity使用

由于我们的项目集成了SpringSecurity,需要通过JWT认证头进行访问,我们还需配置好SpringDoc的白名单路径,主要是Swagger的资源路径;

/**

* SpringSecurity的配置

* Created by macro on 2018/4/26.

*/@Configuration@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity httpSecurity) throws Exception {httpSecurity.csrf()// 由于使用的是JWT,我们这里不需要csrf.disable().sessionManagement()// 基于token,所以不需要session.sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests().antMatchers(HttpMethod.GET,// Swagger的资源路径需要允许访问"/","/swagger-ui.html","/swagger-ui/","/*.html","/favicon.ico","/**/*.html","/**/*.css","/**/*.js","/swagger-resources/**","/v3/api-docs/**").permitAll().antMatchers("/admin/login")// 对登录注册要允许匿名访问.permitAll().antMatchers(HttpMethod.OPTIONS)//跨域请求会先进行一次options请求.permitAll().anyRequest()// 除上面外的所有请求全部需要鉴权认证.authenticated();            }}

然后在OpenAPI对象中通过addSecurityItem方法和SecurityScheme对象,启用基于JWT的认证功能。

/**

* SpringDoc API文档相关配置

* Created by macro on 2022/3/4.

*/@ConfigurationpublicclassSpringDocConfig{privatestaticfinalString SECURITY_SCHEME_NAME ="BearerAuth";@BeanpublicOpenAPImallTinyOpenAPI(){returnnewOpenAPI()                .info(newInfo().title("Mall-Tiny API")                        .description("SpringDoc API 演示")                        .version("v1.0.0")                        .license(newLicense().name("Apache 2.0").url("https://github.com/macrozheng/mall-learning")))                .externalDocs(newExternalDocumentation()                        .description("SpringBoot实战电商项目mall(50K+Star)全套文档")                        .url("http://www.macrozheng.com"))                .addSecurityItem(newSecurityRequirement().addList(SECURITY_SCHEME_NAME))                .components(newComponents()                                .addSecuritySchemes(SECURITY_SCHEME_NAME,newSecurityScheme()                                                .name(SECURITY_SCHEME_NAME)                                                .type(SecurityScheme.Type.HTTP)                                                .scheme("bearer")                                                .bearerFormat("JWT")));    }}

测试

接下来启动项目就可以访问Swagger界面了,访问地址:http://localhost:8088/swagger-ui.html

我们先通过登录接口进行登录,可以发现这个版本的Swagger返回结果是支持高亮显示的,版本明显比SpringFox来的新;

然后通过认证按钮输入获取到的认证头信息,注意这里不用加bearer前缀;

之后我们就可以愉快地访问需要登录认证的接口了;

看一眼请求参数的文档说明,还是熟悉的Swagger样式!

常用配置

SpringDoc还有一些常用的配置可以了解下,更多配置可以参考官方文档。

springdoc:swagger-ui:# 修改Swagger UI路径path:/swagger-ui.html# 开启Swagger UI界面enabled:trueapi-docs:# 修改api-docs路径path:/v3/api-docs# 开启api-docsenabled:true# 配置需要生成接口文档的扫描包packages-to-scan:com.macro.mall.tiny.controller# 配置需要生成接口文档的接口路径paths-to-match:/brand/**,/admin/**

总结

在SpringFox的Swagger库好久不出新版的情况下,迁移到SpringDoc确实是一个更好的选择。今天体验了一把SpringDoc,确实很好用,和之前熟悉的用法差不多,学习成本极低。而且SpringDoc能支持WebFlux之类的项目,功能也更加强大,使用SpringFox有点卡手的朋友可以迁移到它试试!

参考资料

项目地址:https://github.com/springdoc/springdoc-openapi

官方文档:https://springdoc.org/

项目源码地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-springdoc

https://mp.weixin.qq.com/s/scityFhZp9BOJorZSdCG0w

五大接口管理平台比较

本人程序猿一枚,多年来深陷接口管理的漩涡中,闲来无事的时候,把现有开放的接口管理平台仔细捋了一遍,整理出来分享给大家,各位看官各取所需,都别客气哈。
Eolinker

这是在所有接口管理平台中我觉得做的最好的一个了,首先功能齐全,基本上其他平台上有的,eolinker都具备了,从项目管理到接口管理,支持团队协作,接口测试,版本管理,在线分享,导入导出等等,十分强大,而且功能虽多,界面却很干净整洁,体验也很棒,强烈推荐!

接口详情页,信息完备,接口信息一览无余,还可以随时切换测试,mock,历史,修改,顺便说一句,这里的测试功能支持在线和本地测试(需要下插件),甚至可以构造表达式,想先怎么处理数据都行,超极好用!

除此之外,eolinker甚至还集成格式转换,编码转换,加密解密等等的小工具。如果担心接口数据安全,还可以直接从官网上下一个开源版本安装到本地,不过功能就没有线上的那么强大了,但是基本需求都能满足。讲道理,功能强大到这个地步我是服气的。

RAP

从接口管理的功能上来说,相对eolinker来说就有一些逊色了,文档信息不够详细,团队协作那块第一次用的时候我真的是完全懵逼了,而且界面真的是有些简陋(感觉像是后台开发人员写的界面),不过接口管理的基本功能都有,支持版本管理,mock测试,导入导出,而且是开源的,文档也比较详细,大家有时间的话可以以此为基础开发自己想要的功能咯。

easyAPI

在接口文档方面,虽然比起eolinker来说还是相对简单,不过对于那些喜欢简单接口文档的朋友来说,easyAPI也不失为一个不错的选择,不过在我试用的过程中,界面好像不是很稳定,有些按钮点击时没有反应,图标时可见时不可见。而且因为接口文档和接口测试不是在一个菜单之下的,两个功能之间的转换有些费力。

不过接口测试的功能还是挺不错的,左边填数据,右边显示结果,感觉还是挺直观的,如果能支持本地测试就更好啦。

EasyAPI在主菜单上还有一个接口监控的按钮,不过点击之后页面为空,似乎一个很牛逼的功能——可能是我打开的方式不对吧,另外还有一个网关的功能,据说可以帮助开发者轻松创建、发布、维护、监控和保护任意规模的API,需要购买才能使用,大家如果感兴趣的话可以试试。

Apizza

用过DHC的朋友应该会觉得apizza的界面似曾相识,用户在编辑接口的同时也可以进行接口测试,很方便也很简单,如果只是想使用接口管理平台进行接口管理和接口测试的朋友,apizza不失为一个不错的选择,功能虽不强大,但十分轻巧简单。

showDoc

比起其它接口管理平台,showDoc更像一款支持在线分享的文档工具,直接给用户提供一个富文本编辑器,想要什么格式的自己编写,简单粗暴。这样的话虽然管理接口的时候相对麻烦,但是拓展性挺强,它给个平台,我们想分享什么都行,会议记录啊,项目信息啊,下班后哪吃饭啊...不过相对来说,测试功能就不怎么好用了,有得有失吧,看大家想用来做什么咯。

以上5款接口管理工具的简单介绍完啦,希望对大家有所帮助~ 关于api接口文档管理工具有哪些和接口文档 工具的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 api接口文档管理工具有哪些的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于接口文档 工具、api接口文档管理工具有哪些的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口的单元测试(接口单元测试用例模板和例子)
下一篇:Java构造函数与普通函数用法详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~