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库/框 ...
随机推荐
- Bootstrap Blazor Table 组件(三)智能生成
原文链接:https://www.cnblogs.com/ysmc/p/16201153.html Bootstrap Blazor 官网地址:https://www.blazor.zone 有了解过 ...
- linux下can调试工具canutils安装与使用
0. 编译环境所需要的工具 libsocketcan-0.0.11.tar.bz2 canutils-4.0.6.tar.bz2 下载路径 https://public.pengutronix.de ...
- python中的sort用法
内置的列表类型提供sort的方法 可以根据多项指标给list实例中的元素排序.在默认情况下,sort方法总是按照自然升序排列列表内的元素 #升序排列 list1=[2,3,1,2,5] list1.s ...
- [题解] 51 nod 1340 地铁环线
不难看出这是一道差分约束的题目. 但是如果想按照通常的题目那样去建边的话,就会发现这句话--相邻两站的距离至少是1公里--建边后就直接让整个题出现了负环(默认是按求最短路建边),没法做了. 这时我们就 ...
- vue - vue基础/vue核心内容(2)
今天的内容书接上回,同样是vue的核心基础部分,今天偏向于理论性,特别是vue对于数据对象的监测那一块,刚开始琢磨了半天,这股劲一过,现在好理解多了 10.watch和computed对比 计算属性案 ...
- Linux服务器安全加固10条建议
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过. 设置复杂密码 服务器设置大写.小写.特殊字符.数字组成的12-16位的复杂 ...
- Linux Troubleshooting 超实用系列 - Disk Analysis
笔者历史文章: https://github.com/CarlJi/words 关于磁盘的使用,实际生产中以下问题会较为常见: No space left on device - 空间不足 Disk ...
- MySQL(8) - MySQL的事务机制
MySQL数据库的事务机制 1.1.事务的概念和特性 1.2.事务的隔离级别 repeatable read是mysql默认的事务隔离级别 #事务A #事务A,临时修改工资,未commit, STAR ...
- 153. Find Minimum in Rotated Sorted Array - LeetCode
Question 153. Find Minimum in Rotated Sorted Array Solution 题目大意:给一个按增序排列的数组,其中有一段错位了[1,2,3,4,5,6]变成 ...
- 好客租房53-context的使用
app组件要传递给child组件 该如何处理 更好的姿势 跨组件传递数据 Provider 用来提供数据 Consumer用来消费数据 1调用React.createContext() 创建provi ...