我对完整的架构理念有不同的疑问。我希望有丰富经验的人可以帮助我,因为我几乎陷入了所有可能性。
我打算重写一个社区网站。我们的客户希望在未来使用原生移动应用程序。所以我需要考虑到这一点。正因为如此,我决定创建一个基于 PHP 框架 Kohana 的 100% REST API 架构。我之所以选择 Kohana,是因为这可以很容易地将内部 API 扩展到其他服务器,而无需付出太多额外的努力。(Kohana 威胁内部 url 请求不是 HTTP,因此一开始并没有太多开销,并且可以通过一些小的代码更改扩展到 HTTP)。
起初,API 是私有的,但稍后我们可能会将其公开,以便让更多服务轻松连接到我们。
基本的 REST 结构如下:
- /猫
- /猫/1
- /cats/1/自定义
例如,“custom”可以是“childs”。
同样适用于:
- /广告
- /出价
- /用户
- /横幅
- ETC..
这些是 API 的完美实体,因为移动应用程序肯定会使用所有这些功能。
所以我们可以得出结论,网站的核心是 REST。所以基本上我想让网站成为 API 的客户端,就像未来的原生应用程序一样。这样维护似乎更容易。
但让我担心的是,还有更多的事情(管理上传的文件、发票、发票自动邮件、广告自动邮件等等)。上传文件需要通过网站到API。这是常见的做法吗?如果我不这样做,网站会执行上传逻辑,这会使网站不再是客户端,应用程序本身也不再存在。因此移动应用程序甚至无法上传,API 和网站都需要知道上传文件夹(重复逻辑)。
我想创建以下模块:
- 社区 API
- 社区网站
Api 似乎是那时的核心。但是.... cronjobs 等呢?实际上它们不应该是网站的一部分,因为这只是一个“客户”。我觉得他们应该直接与模型或 API 交互。所以基本上 API 更像是通往核心的网关,我认为我需要这个:
- 社区核心
- 楷模
- 定时任务
- 自动邮件(cronjobs 的一部分)
- 发票等
- 社区 API
- 通过 HTTP 与核心中的模型交互
- 社区网站
- 网站
- 行政
核心 cronjobs 是 REST 结构的一个例外。它们是唯一可以在不通过 api 的情况下更改数据的。至少这是我的想法,因为它们属于核心,而 API 位于核心之上。
但按照设计,这似乎是错误的。操作应该只通过 API!
选择:
- 社区核心
- 楷模
- 社区 API
- 通过 HTTP 与核心中的模型交互
- 社区业务
- 定时任务
- 自动邮件(cronjobs 的一部分)
- 发票等
- 社区网站
- 网站
- 行政
在我看来,这在设计上看起来更好。
(来源:mauserrifle.nl)
主要问题
1)
cronjobs 应该通过 API 还是 Core 模型进行操作?
2)
当然,我的发票 cronjob 需要一个与主网站样式差不多的模板。但是,如果我的 cronjob 是业务或核心的一部分,它就不会知道我的主要网站。解决这个问题有什么意义?
3)
我的网站将使用 mustache 作为模板引擎。(php 和 javascript 都可以解析这些模板)。我想直接使用 api 进行 ajax 调用,但后来意识到:
该站点从 api 获取数据,将时间戳格式化为模板的日期 (Ymd),然后进行渲染。如果我让javascript直接调用api,javascript也必须有逻辑(格式化)。这是重复的代码!感觉唯一的解决方案是调用 ajax 网站(调用 api 和格式)并返回格式化的 json。我对吗?
但是....像删除广告这样的简单调用可以直接通过api(例如DELETE:/ads/1
我接到各种各样的电话......
有什么更好的解决方案吗?
4)
总体:我的架构是否过于复杂?我应该考虑的任何替代方案?
我很想听听您的反馈!