前言

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

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

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

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

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

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

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

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

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

1.时刻保持同步性,这意味着如果开发过程中增加了什么内容,那么从文档中也应该马上得知,即便是进度滞后,也应该保证文档内容在即将发布时与开发进度是一致的。

2.文档内容应该提供项目整个功能的完整内容,同时实现的方法也应该记录在文档中,供开发人员回看,方便查漏补缺。

3.文档应该作为指导和规范,帮助不同分工的开发人员完成目标统一的业务,也可用于测试API,并有助于增强开发团队沟通。如果有条件的话,还可以对完善文档的人提供奖励。

基本的API文档部分

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

1.如果你使用的是OAuth,请不要忘记在文档中解释如何设置OAuth并获取API密钥。

2.你需要记录开发中遇到的错误以及它们导致的问题,你应该在文档中解释这个错误是否违反了错误标准,即失败示例。

3.你需要记录包含端点和有关如何使用它们的信息,包括请求信息和返回信息。这是API文档的最主要部分。

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

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

API文档还应包含哪些内容

1.解释API文档中每个参数作用。

2.各种语言和工具(cURL,Postman等)的API调用示例。这些示例可能会被多次使用,可以说是API文档中最重要的部分。

3.详细说明调用API时的工作流程。

4.API提供程序采用的设计原则概述,例如REST(特别是超媒体),HTTP代码等。

5.有关身份验证的信息,包括可能实现的其他方案,如OAuth或OpenID Connect。

6.有关错误处理的一般信息以及有关HTTP返回码的信息。

7.一种交互式API资源管理器,允许开发人员轻松地将所有这些信息变为现实。

开始撰写你的API文档

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

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

3 个API文档模板标准

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

1.Swagger和Open API。你可以轻松生成自己的API服务器代码,客户端代码和文档本身。Open API Initiative(OAI)专注于基于Swagger规范创建,发展和推广供应商中立的API描述格式。

2.RAML。RESTful API建模语言系统提供了一种能指定API使用模式的简便方法。

3.API Blueprint。这是一种基于Markdown格式的标准,可让你轻松地从文档中生成代码。

除了作者提到的三种API标准外,EOLINKER也支持自动读取代码注解生成API文档,极大地提高了开发者文档撰写的效率,有兴趣的试试 EOLINKER API Studio,我这里就不多说了,方正效率的确提升了很多!https://www.eolinker.com

总结

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

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

原文作者:Guy Levin

翻译和修改:隔壁王书

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

转载于:https://www.cnblogs.com/schips/p/11002614.html

(转)如何真正实现由文档驱动的API设计?相关推荐

  1. 开发接口文档_更优更稳更好,看文档驱动开发模式在AIMS中的优势

    ​[摘要]程序员常会说:我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有一个很老的梗: 我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有这种想法的程序员应该算是一个老鸟了,对于 ...

  2. 机房收费系统个人重构版:透过文档谈文档驱动开发

    [背景] 机房收费系统个人重构已接近尾声,在最后阶段自己去补文档以及其中涉及到的图!经过将近一周的奋战将其完善,并最终通过师父的验收.透过这次机房重构写文档和画图,自己感触颇深,在此与大家共享. [文 ...

  3. java api文档_细说API – 文档和前后端协作

    在上一篇文章--<细说API – 重新认识RESTful>中介绍了如何理解和设计RESTful风格的API,现在我们来聊聊如何有效的呈现API文档,以及前后端协作的方式. 我经历过一些没有 ...

  4. 微信支付 自动退款 php,银联在线、微信、支付宝自动退款接口文档总结和API地址...

    关于微信和支付宝自动退款接口的接入总结 一:支付宝的自动退款接口接入 支付宝官方api:https://doc.open.alipay.com/doc2/apiDetail.htm?spm=a219a ...

  5. UG 二次开发中文帮助文档,UFun在线帮助文档, NX API 中文帮助文档

    UG 二次开发中文帮助文档,UFun在线帮助文档, NX API 中文帮助文档 在线的中文帮助文档,不用下载,网页直接查询函数: UFun函数中文帮助文档地址:http://www.ugapi.com ...

  6. SCADE Display(OpenGL)软件设计文档生成工具的设计考虑

    SCADE Display(OpenGL)软件设计文档生成工具的设计考虑 2018年6月 1 引言 本文档描述在SCADE Display软件设计文档生成工具(以下简称为SDYSDDGEN)的设计过程 ...

  7. 软件设计文档如何编写,设计文档内容都包括什么

    我们经常听到这样的话: "设计文档没有用,是用来糊弄客户和管理层的文档": "用来写设计文档的时间,项目开发早就做完了": "项目紧张,没有时间做设计 ...

  8. Linux内核:VFIO 内核文档 (实例,API,bus驱动API)

    <ARM SMMU原理与IOMMU技术("VT-d" DMA.I/O虚拟化.内存虚拟化)> <提升KVM异构虚拟机启动效率:透传(pass-through).DM ...

  9. appium java api文档_Appium常用API

    appium的客户端(WebDriver)提供的接口按作用分为: 1.系统操作 2.获取和操作控件信息(常用) 3.控件查找(常用) 4.手势操作 系统操作1. driver.set_network_ ...

  10. 唐诗三百首加密软件如何使用_文档文件加密及设计图纸加密的防泄密软件怎么部署和使用...

    深圳加密软件发展很快,目前较先进.较安全的加密技术是透明加密.透明加密是一种根据要求在操作系统层自动地对写入存储介质的数据进行加密的技术.文件透明加密模块是防止电子文件由于公司内部员工泄露而开发的内核 ...

最新文章

  1. java run_javarun
  2. IT顾问成长分享沙龙
  3. adb devices 找不到设备的解决方法,亲测,超管用
  4. python-类的基本知识
  5. python设置函数_在Python中设置函数签名
  6. 创建优秀团队文化的四大要点
  7. MySQL分区间进行数据统计
  8. 我们公司使用了 6 年的分布式锁,很是牛逼啊!
  9. 搭建python本地源
  10. pdg转pdf的正确方法!!
  11. html静态网页制作制作表格,北邮HTML静态网页制作.docx
  12. c语言万年历完整源代码,C语言万年历的源程序
  13. cortex m3 寄存器
  14. (软件构造) 关于JDK版本更换问题(附jdk下载链接以及jdk环境变量全教程)
  15. 办理房产证,重要的三张纸
  16. Ansj添加停用词表
  17. VTK-三维坐标系计算两点之间距离
  18. 微信公众号(服务号)接入开发(2)之微信授权登陆
  19. 共享棋牌室/共享茶室,Java+小程序,sass,方案分享
  20. 中图仪器先进光学测量仪器“小阅兵”

热门文章

  1. 回调函数是同步还是异步_[React] 4 - setState / 异步还是同步?
  2. 【渝粤教育】国家开放大学2018年秋季 0056-21T知识产权法 参考试题
  3. 【渝粤教育】电大中专新媒体营销实务 (14)作业 题库
  4. VIM+LaTexSuite配置
  5. 无约束最优化(五) 最小二乘法问题的解法
  6. ubuntu16.04下ROS操作系统学习笔记(五)gazebo物理仿真环境搭建、加载服务端模型数据减少报错
  7. lu分解 百度百科
  8. 【转】JAVA错误:The public type *** must be defined in its own file***
  9. iOS 力学动画生成器UIKit Dynamics 之碰撞效果解说
  10. 【转】Servlet/JSP学习笔记(3)-Lomboz介绍+安装方法