API - 网站通讯。我应该复制逻辑吗?

API - WebSite communication. Should I duplicate logic?

我一直在寻找这个问题的答案,但提出查询(问题)本身对我来说有点困难。因此,如果下面的问题已经有了很好的答案,我将非常感谢 link.

假设我有一个电子商务网站和一个 API 端点,用于将来来自移动应用程序的调用。我的问题是:我应该为网站上的产品页面复制查询产品的逻辑,还是应该将网站视为 API 客户端并通过制作 CURL 来显示产品信息?请求 API.

我想我应该坚持最后一个。但我担心在脚本中发出额外的 curl(TCP/IP) 请求。整体响应时间会明显变慢吗?还有其他 "patterns" 我不知道的吗?谢谢。

站点在同一台服务器上,但 API 使用 Phalcon PHP 并且网站使用常规 PHP

重复绝对是错误的做法。

从技术上讲,您有以下三种选择:

  • 将共享的业务逻辑移动到一个单独的存储库,并在两个项目中将其作为私有组合包重用
  • 使用 cURL/socket 包装器库访问 API(可能使用 Guzzle
  • 使用 JS(最好通过 fetch)public 调用 API

这些都是缺点,因此您的选择将取决于哪个选项的伤害较小。

共享库的性能最好,但会使部署过程复杂化,并且在某些情况下,这些应用程序(站点和 api)会有相互矛盾的要求。问题是组织性的。

通过 HTTP 在内部调用 API 服务器会使网站的响应速度大大降低(因为 TTFB 会更长),但它会让您完全离开 API 代码不变。

public 中的所有内容都会带来安全和授权问题。但是,根据您对移动 API 客户的预期方式,这可以被视为未来投资。但这将需要大量的开发时间和精通 javascript(甚至可能使用 JS 框架)的人员,因为您的网站将不得不进行大量更改。大多数开发密集型选项。