优雅解决typescript生成接口文档的问题

HerbertHe      2022-02-13     557

关键词:

写在前面的

我这个人平时比较懒,尤其不是很喜欢写接口文档,在前后端开发的过程中这个需求总是存在的。虽目前主营前端,但是工作室后端的事情也经常是我在管的,所以如何更好的偷懒呢?于是,这个项目就诞生了。

TypeScript 有着严格的类型语法规范,prettier 可以帮我们很好的格式化我们的 TypeScript 代码,将类型定义文件分离代码共用。除此之外,nodejs 带给我们了 JavaScript 脱离浏览器的开发的体验,让我们可以更随心模块化封装可以通用的库。那么,为什么不可以将 TypeScript 的类型定义用于自动生成 Markdown 的文档呢?得益于在 Markdown 上的积累,于是说干就干了。

实现思路

TypeScript主要靠interface和type进行接口、类型的定义,最初的版本只实现了interface接口类型,自 v1.1.0版本开始已经可以支持type进行类型定义了。

在业务层我将interface分为了两类,即 Request InterfaceSimple Interface 。区别在于 Request Interface 会有 prefixsuffix 的概念,利用前缀和后缀可以区别两种接口。所有的文档都是基于正则表达式和对应的模板匹配实现的,分离了解析层、渲染层和导出层,这样可以更加方便对代码进行debug。

已经实现的库

基于上述的思想,已经产出了 api-hose 这个库。但是,只是个库而不是框架。为了尽可能使生成的产物更小,我选择了使用rollup打包,并且完全剔除了nodejs的部分。这个库可以集成到自己的命令行工具中去,也是Nuco工作室前端团队命令行工具nuco-cli的依赖之一。

因为是正则实现的,因此实现的是增量更新,会随着迭代进一步解决可能会存在的bug和实现新的feature。现在可能的bug基本上都测试过了,欢迎使用并踢issue。

生成的文档完全符合markdown标准语法,我的目标是连一根黄线都最好不要出现。

转:swagger2自动生成接口文档和mock模拟数据

...据?这是很多公司前后端分离之后带来的困扰,那怎么来解决这些问题?问题一的一般解决方案:后端团队共同维护一个在线文档,每次改接口再去改对应的文档,但难免会遗漏,花的大力气但却效果平平。问题二的一般解决方... 查看详情

TypeScript 生成函数

】TypeScript生成函数【英文标题】:TypeScriptgeneratefunction【发布时间】:2021-09-1704:23:53【问题描述】:我正在开发一个工具来为我生成一些样板代码。我们的想法是解析位于名为config的文件夹中的所有.json文件,并为每个文件生成... 查看详情

如何从基于 TypeScript 的 Express 应用程序生成 swagger API 文档?

】如何从基于TypeScript的Express应用程序生成swaggerAPI文档?【英文标题】:HowtogenerateswaggerAPIdocfromTypeScriptbasedExpressapp?【发布时间】:2019-12-1923:54:03【问题描述】:我可以使用ExpressAPIwithautogeneratedOpenAPIdocthroughSwagger文章配置swaggerurl... 查看详情

扩展嵌套 typescript 接口

】扩展嵌套typescript接口【英文标题】:Extendnestedtypescriptinterface【发布时间】:2020-10-3010:37:47【问题描述】:我有一些使用代码生成器创建的复杂打字稿类型,我希望能够使用这些类型的一部分,而不必重新定义整个东西。例如... 查看详情

TypeScript 类与同名接口之间的关系

】TypeScript类与同名接口之间的关系【英文标题】:RelationshipbetweenaTypeScriptclassandaninterfacewiththesamename【发布时间】:2017-08-2016:59:46【问题描述】:对于TypeScript类和同名接口之间看似特殊的关系,我很难找到任何清晰的文档或解释... 查看详情

解决访问swaggerui接口文档显示basic-error-controler问题(代码片段)

...迫症的我,感觉看起来很不舒服,结果百度了好久,找到解决方案,刚接触springboot对于很多api还不是很熟悉,先mark再说代码如下:packagecom.course.config;importcom.google.common.base.Predic 查看详情

Fencepost 问题的优雅解决方案(使用字符串)

】Fencepost问题的优雅解决方案(使用字符串)【英文标题】:ElegantSolutionstotheFencepostProblem(withStrings)【发布时间】:2011-10-1500:14:28【问题描述】:我指的是将Strings与中间的某个String连接起来,比如用句点分隔的句子连接起来,或... 查看详情

springboot整合lkadoc强大的api接口文档自动生成(代码片段)

...于SpringBoot平台,拥有非常强大的接口文档管理功能。为解决Java后台开发人员编写接口文档、调试接口而生。同时提供了简洁、大气、功能丰富的接口文档UI操作界面,方便后端与前端之间的接口对接。愿景  我们愿成为java开... 查看详情

一分钟完成springboot项目整合swagger2实现自动生成接口文档

...时间、文档难以与接口保持一致等。Swagger2的出现很好的解决了上述问题,可以实现接口文档实时在线生成,提供在线接口测试功能。唯一的弊端就是对接口程序有侵入,但本人认为还是利大于弊的。接下来我们将Swagger2整合到sp... 查看详情

typescript从swagger.yaml生成typescript接口(代码片段)

查看详情

消息中字符串的优雅解决方案

】消息中字符串的优雅解决方案【英文标题】:ElegantsolutionforStringinMessage【发布时间】:2019-04-0314:34:42【问题描述】:我正在编写一个旨在受其他应用程序约束的Android服务。它使用Messenger作为IBinder。现在我偶然发现了一个问题... 查看详情

使用集合代替桌子(或其他优雅的解决方案)

】使用集合代替桌子(或其他优雅的解决方案)【英文标题】:Usingasetintheplaceofatable(oranotherelegantsolution)【发布时间】:2014-07-2223:06:00【问题描述】:我回答了一个问题,我必须即时生成一个临时的derivedtable(或使用实际表),... 查看详情

规范化数据的 TypeScript 类型或接口

】规范化数据的TypeScript类型或接口【英文标题】:TypeScriptTypeorInterfaceforNormalizedData【发布时间】:2019-03-2122:29:09【问题描述】:TLDR:如何为规范化数据创建接口?我正在使用TypeScript构建一个React应用程序。我使用Normalizr对来自... 查看详情

swagger---api接口文档自动生成工具

...。  因此,在实际开发中,常用Swagger-API接口文档自动生成工具,帮助项目自动生成和维护接口文档。  Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,它具有以下特点:  及时性:... 查看详情

框架来优雅解决重试-springretry(代码片段)

重试的意义Tomakeprocessingmorerobustandlesspronetofailure,itsometimeshelpstoautomaticallyretryafailedoperation,incaseitmightsucceedonasubsequentattempt.Errorsthataresusceptibletothiskindoftreatmentaretransientinnature.Forexample,aremotecalltoawebserviceoranRMIservicethatfailsbecauseofanetworkgl... 查看详情

优雅的在vue中使用typescript

引言近几年前端对TypeScript的呼声越来越高,Typescript也成为了前端必备的技能。TypeScript是JS类型的超集,并支持了泛型、类型、命名空间、枚举等特性,弥补了JS在大型应用开发中的不足。在单独学习TypeScript时,你会感觉很多概... 查看详情

TypeScript 接口可选属性和返回类型

】TypeScript接口可选属性和返回类型【英文标题】:TypeScriptinterfaceoptionalpropertiesandreturntype【发布时间】:2020-09-1422:52:12【问题描述】:我是typescript的新手,现在浏览文档,“可选属性”部分中有这个示例:interfaceSquareConfigcolor?:s... 查看详情

接口文档自动生成工具apidoc

...面有的模块会出问题,导致apidoc无法使用。    2、生成接口文档之后,把文档放到服务器上面,发现接口文档无法加载  看一下浏览器的请求,发现是有些资源无法加载,但是文件确实是存在的    后来发现是请求... 查看详情