API 开发者需要避免的10个错误【翻译】
随着低代码和无代码工具的出现,构建API比以往任何时候都更简单、更快。不过因为开发简单了,开发者很容易忽略一些潜在的问题,导致整个业务的下游影响。
在设计阶段多花点时间,可以确保API真正有用、安全、可扩展和稳定。
本文会讨论API开发者需要避免的10个常见错误,帮助我们开发更高质量的API。
API开发者需要避免的10个常见错误
1、API开发者的错误导致臃肿的响应
从编写代码的角度来看,调用返回整个对象,比返回特定的参数要容易得多。但问题是这种调用造成的问题大于其带来的价值。这些臃肿的响应参数对使用者毫无意义,还会影响两端的延迟和带宽。
所以需要在方法中建立灵活性,让使用者可以自由选择,是返回完整对象,或者所需的特定参数。
** 2、多个场景隔离调用**
单独的测试单个方法仅对单元测试有用,但这并不能保证同样的方法也能在应用生态系统中发挥作用。我们可以在单元测试中获得积极的结果,但在实际使用测试中会遇到错误。为避免此问题,我们需要在多个场景中运行每种方法,以确保效果。

3、不了解需要解决的问题
当需求与开发人员认为的问题之间存在脱节时,问题肯定会出现。这种不幸但常见的错误会让使用者失望,也会浪费我们的时间去返工重做。为了避免这个问题,需要评估整个工作流程以了解它是如何适应的。
4、API开发者的错误导致耗时的故障排除
当错误消息提示对消费者没有意义时,它会在两端造成不必要的工作。消费者必须花费数小时来解决问题。到最后,我们也不得不帮助他们,并最终进行一些返工以创建更有用的错误消息提示。我们需要通过准确地解释每一个错误的含义和出错的地方来创建有用的错误消息提示。此外,坚持使用众所周知的状态代码。
5、忽略可扩展性
随着时间的推移、使用量的增加,对系统提出了更高的要求。应用程序编程接口需要适当地处理需求和扩展。在设计阶段规划可扩展性可以帮助避免这个问题。
6、缺少帮助文档
当缺少帮助文档时,没人会深入使用我们新开发的应用程序编程接口。此问题会导致满意度降低和无休止的故障排除。提供解释如何使用API的综合帮助文档。确保文档保持最新;这让使用者知道如何使用任何功能。

7、输入验证不足
当我们没有在数据验证上花费足够的时间时,总会有人发现导致问题的漏洞。它可以简单到在看似无害的字段中传递无效数据。花点时间验证使用者发送的每个输入,以最小化发生这种情况的机会。
8、高轮询请求处理不当
寻找最新数据的使用者高频提出请求,容易给系统带来不必要的压力。与其让客户请求更新,不如使用webhooks之类的框架,在数据发生变化时推送更新的数据。这可以减少不必要的轮询。

9、冗余端点
冗余端点是支持和重构的噩梦。当多个端点返回相同的数据时,就会发生这种API开发的错误,因为我们需要对引用该数据的所有端点进行更新。在实施新端点以支持各种用例时,请密切关注更新,确保没有端点包含可能会重复使用的相同信息。
10、没有针对性能进行优化
发送多个请求来完成一项任务会导致延迟和带宽开销。我们可以通过将这些小请求批量处理为一次调用来优化性能。这些批量的处理请求对于想要为同一进程发送大量请求的使用者非常有用。
使用 Eolink 创建功能齐全的API
开发健全的、可扩展且有用的API并不一定很复杂。如果我们遵循一些额外的步骤并避免这 10 个容易出现的API开发错误,就可以最大限度地减少返工并创建一个提供大量价值的全功能 API。除此之外,使用Eolink这类可视化的API开发工具,也可以帮助我们快速轻松地构建 API。
图中所使用的的接口管理工具是eolink,可以对不同类型的接口进行测试,在测试流程中也支持添加不同步骤,感兴趣可以自行使用:www.eolink.com
API 开发者需要避免的10个错误【翻译】的更多相关文章
- python开发者常犯的10个错误(转)
常见错误1:错误地将表达式作为函数的默认参数 在Python中,我们可以为函数的某个参数设置默认值,使该参数成为可选参数.虽然这是一个很好的语言特性,但是当默认值是可变类型时,也会导致一些令人困惑的情 ...
- [转载]有经验的Java开发者和架构师容易犯的10个错误
首先允许我们问一个严肃的问题?为什么Java初学者能够方便的从网上找到相对应的开发建议呢?每当我去网上搜索想要的建议的时候,我总是能发现一大堆是关于基本入门的教程.书籍以及资源.同样也发现网上到处充斥 ...
- Java开发者写SQL时常犯的10个错误
首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 - 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - iOS ...
- Python开发者最常犯的10个错误
Python是一门简单易学的编程语言,语法简洁而清晰,并且拥有丰富和强大的类库.与其它大多数程序设计语言使用大括号不一样 ,它使用缩进来定义语句块. 在平时的工作中,Python开发者很容易犯一些小错 ...
- C# 程序员最常犯的 10 个错误
关于C# C#是达成微软公共语言运行库(CLR)的少数语言中的一种.达成CLR的语言可以受益于其带来的特性,如跨语言集成.异常处理.安全性增强.部件组合的简易模型以及调试和分析服务.作为现代的CLR语 ...
- C# 程序员最常犯的 10 个错误(转)
关于C#关于本文常见错误 #1:把引用当做值来用,或者反过来常见错误 #2:误会未初始化变量的默认值常见错误 #3:使用不恰当或未指定的方法比较字符串常见错误 #4:使用迭代式 (而不是声明式)的语句 ...
- C# 程序员最常犯的 10 个错误http://www.oschina.net/translate/top-10-mistakes-that-c-sharp-programmers-make
来源:http://www.oschina.net/translate/top-10-mistakes-that-c-sharp-programmers-make 关于C# C#是达成微软公共语言运行 ...
- Java程序员常犯的10个错误
本文总结了Java程序员常犯的10个错误. #1. 把Array转化成ArrayList 把Array转化成ArrayList,程序员经常用以下方法: List<String> lis ...
- Web开发人员常犯的10个错误
说到开发一个运行在现代网络中的网站:Web开发人员需要选择虚拟主机平台和底层数据存储,准备编写HTML.CSS和JavaScript用的工具,要有设计执行方式,以及一些可用的JavaScript库/框 ...
随机推荐
- XCTF练习题---MISC---Training-Stegano-1
XCTF练习题---MISC---Training-Stegano-1 flag:steganoI 解题步骤: 1.观察题目,下载附件 2.打开下载的图片文件,发现就是一个点,修改文件扩展名,还是说查 ...
- [题解] 51 nod 1340 地铁环线
不难看出这是一道差分约束的题目. 但是如果想按照通常的题目那样去建边的话,就会发现这句话--相邻两站的距离至少是1公里--建边后就直接让整个题出现了负环(默认是按求最短路建边),没法做了. 这时我们就 ...
- java高级用法之:绑定CPU的线程Thread-Affinity
目录 简介 Java Thread Affinity简介 AffinityLock的使用 使用API直接分配CPU 总结 简介 在现代计算机系统中,可以有多个CPU,每个CPU又可以有多核.为了充分利 ...
- Vue的vue-router基本使用
一.Vue-router是什么? Vue Router是Vue.js的路由管理器.和Vue.js的核心深度集成,是SPA单页应用的路径管理器,适合用于构建单页面应用.Vue的单页面应用是基于路由和组件 ...
- Java学习,利用IDEA开发工具连接redis
Idea连接redis及Jedis数据操作 注意是否开启了redis服务!!! 1.打开虚拟机终端,查看虚拟机防火墙是否关闭 查看防火墙当前状态命令: $sudo ufw status 我的是默认关闭 ...
- UML类图六种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization):继承的关系,实线带三角形箭头,指向父类. 实现(Realization):实现的关系,虚线带三角形箭头,指向接口. 关联( ...
- Jwt隐藏大坑,通过源码帮你揭秘
前言 JWT是目前最为流行的接口认证方案之一,有关JWT协议的详细内容,请参考:https://jwt.io/introduction 今天分享一下在使用JWT在项目中遇到的一个问题,主要是一个协议的 ...
- 《Unix 网络编程》11:名字和地址转换
名字和地址转换 系列文章导航:<Unix 网络编程>笔记 域名系统 简介 域名系统主要用于主机名字和 IP 地址之间的映射.主机名可以是: 简单名字,如:centos01 全限定域名(FQ ...
- 在windows下使用s3cmd和s3browser来管理amazon s3的笔记
S3是Amazon S3的简称,s3cmd是一款命令行工具用来管理s3,同时还有一款图形化的管理工具:s3 browser. 因为绝大多数用户都是在linux下管理s3,而我们的打包机是在window ...
- Redis概述及基本数据结构
SQL vs NoSQL 结构化 SQL 是结构化的,一旦定义了表结构,以后在维护数据的时候必须严格遵守定义的结构. NoSQL 是非结构化的,常见的形式有 Redis 的 Key-Value 存储形 ...