关键词:
写在前面的
我这个人平时比较懒,尤其不是很喜欢写接口文档,在前后端开发的过程中这个需求总是存在的。虽目前主营前端,但是工作室后端的事情也经常是我在管的,所以如何更好的偷懒呢?于是,这个项目就诞生了。
TypeScript 有着严格的类型语法规范,prettier 可以帮我们很好的格式化我们的 TypeScript 代码,将类型定义文件分离代码共用。除此之外,nodejs 带给我们了 JavaScript 脱离浏览器的开发的体验,让我们可以更随心模块化封装可以通用的库。那么,为什么不可以将 TypeScript 的类型定义用于自动生成 Markdown 的文档呢?得益于在 Markdown 上的积累,于是说干就干了。
实现思路
TypeScript主要靠interface和type进行接口、类型的定义,最初的版本只实现了interface接口类型,自 v1.1.0
版本开始已经可以支持type进行类型定义了。
在业务层我将interface分为了两类,即 Request Interface
和 Simple Interface
。区别在于 Request Interface
会有 prefix
和 suffix
的概念,利用前缀和后缀可以区别两种接口。所有的文档都是基于正则表达式和对应的模板匹配实现的,分离了解析层、渲染层和导出层,这样可以更加方便对代码进行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、生成接口文档之后,把文档放到服务器上面,发现接口文档无法加载 看一下浏览器的请求,发现是有些资源无法加载,但是文件确实是存在的 后来发现是请求... 查看详情