如何真正实现由文档驱动的 API 设计?

2019-06-11 12:10:00 +08:00
 vocalman

前言

本文主要介绍了一种新的开发思路:通过反转开发顺序,直接从 API 文档中阅读代码。作者认为通过这种开发方式,你可以更清楚地知道文档表达出什么以及它应该如何实现。

如果单从 API 文档出发,由于信息量不足,通常很难了解它具体想实现的功能,正因为有这种假设的存在,使得经常在开发之后才会想起对文档进行完善。但这种习惯对于任何开发人员而言,都不是一个好事情,在一个项目中他们会被分配完成不同的任务,不管是什么任务,必须要准确理解每个功能后,才能找到合适的方法完成工作,而一份完善的文档的作用就是能让你更好的理解具体的任务。

我们面对项目验收不断临近的截止日期,更不得不将精力全都放在开发上,导致几乎没有时间处理和完善项目文档,一般只会写个大概。因此,当你发现了文档上十分简略的信息时,那只能寄希望于回忆起当时的开发细节,不然验收时根本无从说起。

如果在验收的标准中,对文档的完整度和正确性提出要求,并且用户能对此进行评级,那文档的完善程度将会大大提升。

在编写大量代码之前,如果已经在文档中记录了所需的详细信息,那么这个文档将成为开发团队的宝贵资源。因为这个文档可以在开发团队和测试人员之间共享,所有人都可以同时使用这样的 API。反过来说,通过团队的交互性凸显了文档在 API 开发中的重要位置。

当你想找到某一个文档时,通过交互协作的方式,你能够直接从项目中调用这个文档,这将有助于开发人员在完成任务时更方便地调用 API,有效减少开发人员调试接口的时间。

我们知道了 API 文档的重要性,下面我们讲一下文档设计应该如何设计。

3 个 API 文档设计中重要功能

这些是我认为在文档中应该存在的三个功能:

基本的 API 文档部分

如何验证 API 使用者的身份呢?首先你需要一个身份信息验证方案。

记录好这三个部分,你将有一个良好的开端,因为你已经有了使用 API 所需的大部分内容。同时对于测试人员来说,根据你的文档进行 API 测试会方便很多。

但这往往还是不够的,当你遇到更复杂的情况,你还得提供额外的 API 的非功能性方面的文档来补充说明。

API 文档还应包含哪些内容

开始撰写你的 API 文档

首先要将每个功能的需求转换为文档,同时你的文档应该是可分享的。只有这样,查看的人可以通过文档获得有关如何正确开发项目的信息,尤其是需要理解文档以解释项目的内部开发人员。

在编写 API 项目的文档之后,如果有条件的话,最好将文档的书面注释和其他内容转换为丰富多彩的网站和其他可自定义的模板,将有助于为项目生成完整的站点。

3 个 API 文档模板标准

在所有 API 文档格式中,其中有三种值得一提,因为它们允许你以手动或者自动的方式设计 API:

除了作者提到的三种 API 标准外,EOLINKER 作为国内 API 接口管理解决方案的领军者,支持自动读取代码注解生成 API 文档,极大地提高了开发者文档撰写的效率,欢迎有兴趣登陆 EOLINKER API Studio,下面附上一张产品示意图:体验研发能力释放的高效!https://www.eolinker.com

总结

作为开发者,如果你想保证他人能够很好地理解你的 API,那么在开发中就必须清楚文档的重要性。虽然有些人也承认上述的观点,认为使用 API 文档启动项目是一个好主意,但实际上大多数人都还在努力编写与文档无关的内容。

如果一开始就规划好你的文档,一旦确定后,那么会有更多的时间来处理主项目的内容。从长远来看,拥有优秀的文档可以为你节省大量时间,并可以帮助你更轻松地构建项目。

原文作者:Guy Levin

翻译和修改:vocalman

原文地址: https://dzone.com/articles/documentation-driven-api-design

1742 次点击
所在节点    程序员
5 条回复
chendy
2019-06-11 12:21:16 +08:00
apijson 即将抵达战场…
janxin
2019-06-11 12:28:10 +08:00
还少了一步,先吹牛逼
ruoxie
2019-06-11 12:31:27 +08:00
那个打广告的又要来了
tinytin
2019-06-11 12:33:15 +08:00
目前我这里最好的开发的体验是
在文档上定义好接口模型,然后生成两端网络层代码
iceheart
2019-06-11 12:41:26 +08:00
godoc 比这个好吧,注释即文档,
文档直接链接到代码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/572762

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX