(转)如何真正实现由文档驱动的API设计?
前言
本文主要介绍了一种新的开发思路:通过反转开发顺序,直接从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
(转)如何真正实现由文档驱动的API设计?的更多相关文章
- 如何真正实现由文档驱动的API设计?
前言 本文主要介绍了一种新的开发思路:通过反转开发顺序,直接从API文档中阅读代码.作者认为通过这种开发方式,你可以更清楚地知道文档表达出什么以及它应该如何实现. 如果单从API文档出发,由于信息量不 ...
- 文档驱动开发模式在 AIMS 中的应用与实践
摘要:程序员常会说:我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有一个很老的梗: 我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有这种想法的程序员应该算是一个老鸟了,对于大多 ...
- [API]使用Blueprint来高雅的编写接口文档 前后端api文档,移动端api文档
网址:http://apiary.io/ 介绍:一款非常强大的前后端交互api设计编辑工具(编辑器采用Markdown类似的描述标记,非常高效),高颜值的api文档,还能生成多种语言的测试代码. 中文 ...
- NanUI文档 - 使用网页来设计整个窗口
NanUI文档目录 NanUI简介 开始使用NanUI 打包并使用内嵌式的HTML/CSS/JS资源 使用网页来设计整个窗口 如何实现C#与Javascript相互掉用(待更新...) 如何处理Nan ...
- api的mock开源工具;api文档生成器;api的mock工具;阿里系;其他开源
django-rest-framework,即drf的api文档,包括自带的文档和其他三方文档,比如swagger.DRF Docs等 https://www.django-rest-framewor ...
- Java文档上传问题设计
近期公司让做一个文档上传的功能,功能描写叙述大概是这样子滴 书籍名称.书籍定价.书籍封面图片(须要上传).文档内容 (须要上传) .还有其它相关的描写叙述信息. 我的设计 表 A 包括以上字段 , ...
- 从Java官网下载最新的文档(包含API文档)
Java学习资料(适合c转java的同学): Java中带包(创建及引用)的类的编译 - 小明快点跑 JAVA 对象引用,以及对象赋值 - 飘来荡去. Java官网下载页:https://www.or ...
- JDK8 API离线文档免费下载&JavaEE API文档离线下载&API在线查看链接&常用的JAR包下载
1.JDK8 API离线文档 链接:https://pan.baidu.com/s/1fYc-QesmYRumTEPmnSgEKA 提取码:2bdr 2.JavaEE API文档离线下载 链接:htt ...
- 文档驱动 —— 表单组件(五):基于Ant Design Vue 的表单控件的demo,再也不需要写代码了。
源码 https://github.com/naturefwvue/nf-vue3-ant 特点 只需要更改meta,既可以切换表单 可以统一修改样式,统一升级,以最小的代价,应对UI的升级.切换,应 ...
随机推荐
- easyUI的c if
{field:'domdistrict2',title:'区县',width:100}, {field:'option',title:'操作',width:fixWidth(0.08),align:' ...
- 入门display:inline-block运用
这是我第一篇博客,是我新的开始,我要用博客记录我的学习之旅,在这里我要感谢我的哥哥,他带我开阔了眼界,纠正了我的格局,给我带来了正能量.我是一个小白,学习的路还很长很长,学习了10天HTML与css, ...
- Leetcode题目338:比特位计数(中等)
题目描述: 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1] 示例 ...
- 性能分析 | Java进程CPU占用高导致的网页请求超时的故障排查
一.发现问题的系统检查: 一个管理平台门户网页进统计页面提示请求超时,随进服务器操作系统检查load average超过4负载很大,PID为7163的进程占用到了800%多. 二.定位故障 根据这种故 ...
- asp.net MVC AngularJS
http://www.cnblogs.com/powertoolsteam/category/834105.html
- JMX简介及was上的使用
参考文章:https://www.ibm.com/developerworks/cn/websphere/library/techarticles/0908_sunyan_jmxdeploy/inde ...
- Linux使用mount挂载Windows共享文件夹
https://blog.csdn.net/tojohnonly/article/details/71374984 https://github.com/tojohnonly 现实中会有这样的场景 , ...
- CentOS7.2环境下安装Nginx
目录 1.下载安装包 2.安装nginx 3.配置nginx开机启动 4.测试 1.下载安装包 官网下载 wget http://nginx.org/download/nginx-1.16.0.tar ...
- Facebook程序员跳楼事件:技术路线会越走越窄吗?
这是小川的第417次更新,第450篇原创 这几天有个刷屏的文章,讲的是Facebook有位程序员跳楼了,这位程序员的一些信息也"被曝光",比如年轻时是浙大的学霸,后来又赴美读硕,中 ...
- 关于Python Web框架——Tornado
关于Tornado的入门看这篇文章,写的非常好: https://zhuanlan.zhihu.com/p/37382503 Tornado 是一个Python web框架和异步网络库,使用非阻塞网络 ...