这个问题在我脑海里已经有一段时间了。
假设我有一个 PHP 网站,它有一个 API(SOAP、REST 等),而这个 API 提供的内容几乎与页面中可用的内容相同(例如博客文章、评论、统计信息等)。
为了避免代码冗余/重复,我正在考虑对站点本身使用 API,因为尽管大多数代码分解已经通过使用 MVC 模型完成,但如果站点必须提供 API,某些逻辑仍然是双重的.
访问者检索给定博客帖子的示例:
经典图形用户界面:
- HTTP 请求:由浏览器发送
- PHP 控制器:读取用户输入
- PHP模型:从数据库中获取帖子
- PHP 控制器:填充视图
- PHP 视图:呈现 HTML
- HTTP 响应:发送到浏览器
使用 API 的图形用户界面:
- HTTP 请求:由浏览器发送
- PHP“帖子”控制器:读取用户输入
- HTTP API 请求:由 PHP 控制器发送到站点的 API URL
- PHP“api”控制器:读取 API 请求
- PHP模型:从数据库中获取帖子
- PHP“api”控制器:填充“api”视图
- PHP“api”视图:渲染(XML、JSON 等)
- HTTP API 响应:发送到第 2 点的 PHP 控制器。
- PHP 控制器:填充视图
- PHP 视图:呈现 HTML
- HTTP 响应:发送到浏览器
我的观点是 GUI应该是一个消耗 API 的层(一个新层),但我担心性能问题,因为在 PHP 网站中,API 调用通过 HTTP 请求需要时间。