为移动应用编写良好的API - 1

99 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天,点击查看活动详情

为移动应用编写良好的API

通往最佳用户体验和开发者体验的道路

建立一个好的应用程序的很大一部分依赖于首先拥有好的API. API正在帮助应用程序提供伟大的功能, 但如果它们设计得不好, 就会造成平庸的用户体验. 在这篇文章中, 将介绍我认为建立良好的API所必需的东西.

作为一个AndroidDev或iOSDev, 你可以把这作为你的宣言, 开始与你的API队友对话.

好的API的特点

我想应该首先定义什么是好的API. 以下是我在移动开发和API开发领域工作多年以上, 从成功和失败中总结出来的拙见. 我希望你能够利用我的一些经验.

最先进的API应该是以下属性的组合

  • 快速
  • 可靠
  • 返回正确的数据
  • 安全
  • 为消费者设计
  • 有版本
  • 有据可查
  • 错误处理
  • 灵活而强大

深入探讨

场景已经设置好了, 现在让我们看看上面的每一个点, 并了解如何能够实施, 以及为什么它很重要.

⚡️ 快速

一个API应该是快速的. 我所说的快速是指它应该在连接到高速互联网的wifi网络上100ms内返回. 这个数字既包括基础设施的处理时间, 也包括通过网络的传输时间. 对于非常复杂的功能来说, 这个数字有时很难实现, 但至少我们应该朝着这个目标努力. 这往往意味着优化代码, 查询和基础设施. 云服务提供了所有必要的工具来平衡和扩展, 从而使API保持快速. 此外, 一些机制如gzip可以帮助减少返回大量数据时的传输时间. 100毫秒是可感知的, 但也是用户所期望的, 在1秒之后, 用户不知道行动是否被注册, 5秒之后, 他们通常会考虑离开这个体验.

返回正确的数据

一个API应该返回正确的数据和正确的数据量, 这也有助于提高速度. 返回正确的数据意味着足以让应用程序完成其工作, 但不能超过. 对于列表来说, 这意味着实现一个适当的分页机制, 例如, 防止返回太多的嵌套对象(除非需要). 有足够的参数, 以便开发者可以调整设置, 以获得他们所需要的东西(见下文的灵活性).

可靠

可靠性和一致性是至关重要的, 因此, 无论负载或新功能, 体验都保持不变. 第一个请求是基础设施的工作, 确保平台能够吸收负载, 并在任何时候都保持可用. 第二个是关于测试覆盖率, 这样就不会有回归的情况出现.

为了保持这一点,我建议建立适当的监控和CI/CD.

🔒 安全

构建API时应考虑到安全问题, 使用加密连接和秘密. 应该始终使用HTTPS, letsencrypt和其他公司提供免费的HTTPS证书, 所以它们不再是借口.

API访问应该需要一个API密钥, 这样才有可能识别客户端应用程序, 并在需要时撤销, OAuth可以用PassportJS和OAuth2orize来实现.

除此之外, API/网关应该实现某种令牌, 如JWT.

最后, 我建议实现作用域, 这样用户就可以只访问API的一个子集.

未完, 待续...

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天,点击查看活动详情