我正在(第一次)开发由 PHP RESTful API 驱动的 PHP 应用程序(可能使用 peej/Tonic)。来自具有直接访问权限的应用程序,在页面加载过程中可能会进行 20 次不同的数据库调用,我试图协调这样一个事实:20 次 API 调用 = 20 次握手(可以通过 Guzzle 持久连接来改进),但也有 20 次连接到数据库。
我相信,通过更好的编程和规划,我可以将所需的 API 调用减少到每页 4-5 次。此时:
a) 考虑到所有其他可用的优化,是否不值得考虑 5 次数据库连接 + 每页加载 5 次握手的延迟?
b)是否有一种现有的方法可以减轻这种情况,但我迄今为止尚未找到?
c)我认为它违反了 RESTful 编程的原则,但如果我有一个 API 方法,该方法本身从其他 API 端点收集信息(例如,获取供应商,其中 x=y,然后获取供应商的产品),是否有记录的方法用于内部 API 交互(特别是在 peej/Tonic 或其他框架内)。
请记住,客户端应该“向服务器发出‘请求’”,服务器有义务满足“该请求”。服务器可能会“执行 20 个不同的数据库查询”来准备其响应,而客户端不需要知道也不关心。
客户的观点变成:“我关心的是你告诉我的什么,而不是你是如何做到的。”
如果您did希望直接向客户端发送查询响应,让客户端使用这些数据“做肮脏的工作”,那么您仍然可以设计服务器请求,以便服务器执行many查询,一次全部发送,并将所有结果集发回...只需 one 交换。
您的首要任务应该是有效地减少发生的交换次数。 返回的数据量(在合理范围内)是次要的。
还要考虑到,“当服务器执行此操作时,工作自然是同步的。”当客户端发出多个异步请求时,这些请求是“异步”的。考虑哪种策略更容易让您调试。 如果服务器收到“要做的请求”,它可以验证该请求(从而检查客户端错误),并执行任意数量的数据库操作,也许是在
TRANSACTION
中。这种策略将服务器置于非常主动的角色,通常比客户端驱动而服务器扮演被动角色的交互要“简单得多”。