在这篇文章中,我们将讨论以下话题:

  • API 架构风格
  • Git 命令如何工作
  • Levels.fyi 如何扩展到数百万用户
  • MVC、MVP、MVVM、MVVM-C 和 VIPER 架构模式

API 架构风格

下图显示了常见的 API 架构风格。

REST

2000 年提出,REST 是最常用的风格。它通常用于前端客户端和后端服务之间。它符合 6 个架构约束。负载格式可以是 JSON、XML、HTML 或纯文本。

GraphQL

GraphQL 由 Meta 于 2015 年提出。它提供了模式和类型系统,适用于实体关系是图状的复杂系统。例如,在下图中,GraphQL 可以在一次调用中检索用户和订单信息,而在 REST 中这需要多次调用。GraphQL 不是 REST 的替代品。它可以建立在现有 REST 服务之上。

WebSocket

WebSocket 是一个协议,在 TCP 上提供全双工通信。客户端建立 WebSocket 以从后端服务接收实时更新。与总是”拉取”数据的 REST 不同,WebSocket 使数据能够被”推送”。

Webhook

Webhook 通常用于第三方异步 API 调用。在下图中,例如,我们使用 Stripe 或 Paypal 作为支付渠道并注册一个 webhook 用于支付结果。当第三方支付服务完成时,它会通知支付服务支付是否成功或失败。Webhook 调用通常是系统状态机的一部分。

gRPC

gRPC 于 2016 年发布,用于微服务之间的通信。gRPC 库处理编码/解码和数据传输。

SOAP

SOAP 代表简单对象访问协议。它的负载仅为 XML,适用于内部系统之间的通信。

问题:你使用过哪些 API 架构风格?

Git 命令如何工作

几乎每个软件工程师都使用过 Git,但只有少数人知道它是如何工作的 :)

首先,重要的是识别我们的代码存储在哪里。通常的假设是只有两个位置——一个在像 Github 这样的远程服务器上,另一个在我们的本地机器上。然而,这并不完全准确。Git 在我们的机器上维护三个本地存储,这意味着我们的代码可以在四个地方找到:

  • 工作目录:我们编辑文件的地方
  • 暂存区:一个临时位置,文件为下次提交而保存
  • 本地仓库:包含已提交的代码
  • 远程仓库:存储代码的远程服务器

大多数 Git 命令主要在这四个位置之间移动文件。

问题:你知道”git tag”命令在哪个存储位置操作吗?这个命令可以给提交添加注释。

Levels.fyi 扩展案例

我今天读到了令人难以置信的事情:Levels.fyi 使用 Google Sheets 作为后端扩展到数百万用户!

他们从 Google Forms 和 Sheets 开始,这帮助他们达到了数百万月活跃用户,然后才切换到合适的后端。

公平地说,他们确实使用无服务器计算,但使用 Google Sheets 作为数据库是一个有趣的选择。

为什么他们使用 Google Sheets 作为后端?用他们自己的话说:“对于一个流量如此大的网站来说,没有后端或任何花哨的基础设施似乎是一个相当反直觉的想法,但我们构建产品的理念一直是,从简单开始并迭代。这使我们能够快速行动并专注于重要的事情”。

应用架构模式

这些架构模式是应用开发中最常用的,无论是在 iOS 还是 Android 平台上。开发人员引入它们是为了克服早期模式的限制。那么,它们有何不同?

  • MVC:最老的模式,可以追溯到近 50 年前
  • 每个模式都有一个”视图”(V)负责显示内容和接收用户输入
  • 大多数模式包括一个”模型”(M)来管理业务数据
  • “控制器”、“呈现器”和”视图模型”是视图和模型之间的翻译器(VIPER 模式中的”实体”)
  • 这些翻译器可能非常复杂,所以提出了各种模式使它们更易维护

问题:请记住,这不是架构模式的详尽列表。其他值得注意的模式包括 Flux 和 Redux。它们与这里提到的模式相比如何?

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP49: API Architectural Styles

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。