Php 架构:API作为网站的核心&;移动应用

Php 架构:API作为网站的核心&;移动应用,php,rest,architecture,kohana,hmvc,Php,Rest,Architecture,Kohana,Hmvc,我对完整的架构想法有不同的疑问。我希望有经验的人能帮助我,因为我几乎陷入了所有的可能性 我计划重写一个社区网站。我们的客户希望将来使用本地移动应用程序。所以我需要考虑这一点。因此,我决定基于PHP框架Kohana创建一个100%RESTAPI体系结构。我之所以选择Kohana,是因为这样可以轻松地将内部API扩展到其他服务器,而无需付出太多额外的努力。(Kohana威胁内部url请求,而不是HTTP,因此在开始时没有太多开销,可以通过一些较小的代码更改扩展到HTTP) 起初API是私有的,但稍后

我对完整的架构想法有不同的疑问。我希望有经验的人能帮助我,因为我几乎陷入了所有的可能性

我计划重写一个社区网站。我们的客户希望将来使用本地移动应用程序。所以我需要考虑这一点。因此,我决定基于PHP框架Kohana创建一个100%RESTAPI体系结构。我之所以选择Kohana,是因为这样可以轻松地将内部API扩展到其他服务器,而无需付出太多额外的努力。(Kohana威胁内部url请求,而不是HTTP,因此在开始时没有太多开销,可以通过一些较小的代码更改扩展到HTTP)

起初API是私有的,但稍后我们可能会将其公开,以便让更多的服务轻松连接到我们

De基本REST结构如下所示:

  • /猫
  • /猫/1
  • /猫/1/定制
  • 例如,“custom”可以是“childs”

    这同样适用于:

  • /广告
  • /出价
  • /使用者
  • /横幅
  • 等等
  • 这些是API的完美实体,因为移动应用程序肯定会使用所有这些功能

    因此,我们可以得出结论,该网站的核心是休息。所以基本上我想让网站成为API的客户端,就像未来的本地应用一样。这样维护起来就容易多了

    不过,让我担心的是,事实上,还有比这多得多的东西(管理上传的文件、发票、发票自动邮寄、广告自动邮寄等等)。上传文件需要通过网站上传到API。这是惯例吗?如果我不这样做,网站将上传逻辑,这使得网站不再是客户端和应用程序本身。因此,移动应用甚至无法上传,API和网站都需要知道上传文件夹(重复逻辑)

    我考虑创建以下模块:

  • 社区api
  • 社区网站
  • Api似乎是当时的核心。但是克朗乔布斯等呢?实际上,他们不应该是网站的一部分,因为这只是一个“客户”。我觉得它们应该直接与模型或API交互。因此,基本上API更像是通往核心的网关,我想我需要这个:

  • 社区核心
    • 模型
    • 克朗乔布斯
    • 自动邮寄(cronjobs的一部分)
      • 发票等
  • 社区api
    • 通过HTTP与core中的模型交互
  • 社区网站
    • 网站
    • 管理员
  • 核心cronjob是REST结构的一个例外。他们是唯一一个不用通过api就能更改数据的人。至少这是我的想法,因为它们属于核心,API位于核心之上

    但从设计上看,这似乎是错误的。操作应该只通过API

    备选方案:

  • 社区核心
    • 模型
  • 社区api
    • 通过HTTP与core中的模型交互
  • 社区企业
    • 克朗乔布斯
    • 自动邮寄(cronjobs的一部分)
      • 发票等
  • 社区网站
    • 网站
    • 管理员
  • 在我看来,这是精心设计的。
    (来源:)

    主要问题

    (一)

    cronjobs应该通过API还是核心模型进行操作

    (二)

    我的工作需要一个模板几乎主网站的风格当然。但如果我的cronjob是业务或核心的一部分,它就不会了解我的主要网站。解决这个问题有什么意义

    (三)

    我的网站将使用胡子作为模板引擎。(php和javascript都可以解析这些模板)。我曾想过直接使用api进行ajax调用,但后来意识到:

    站点从api获取数据,将模板的时间戳格式化为日期(Y-m-d),然后呈现。如果让javascript直接调用api,javascript也必须有逻辑(格式化)。这是重复的代码!感觉唯一的解决方案是为ajax调用网站(它调用api和格式)并返回格式化的json。我说得对吗

    但是。。。。删除广告等简单调用可以直接通过api进行(例如删除:/ads/1

    我接到各种各样的电话

    有更好的解决办法吗

    (四)

    总体而言:我的架构是否太复杂?我可以考虑其他的选择吗?<
    我很想听到你的反馈

    我觉得这不符合逻辑

    是的,API和网站以及接下来可能发生的事情是分开的,网站应该是API本身的客户机,但由于它将大大简化事情,我认为您应该重新使用域类来构建和建立您的网站逻辑。通过这种方式,您可以使用所有相同的代码库,轻松处理所有问题,包括广告、发票,当然还有文件上传

    对于公共API,如果可能的话,它应该放在一个单独的框中,重新使用相同的域类,但使用不同的身份验证方法,这样无论出现什么问题,它都不会影响主服务

    您的cron作业只能用于通过API本身触发调用,这些调用应该在主应用程序(通过API的网站)上进行

    如果你在构建网站时没有重复自己,比如,使用与基础相同的代码并将web应用程序包装在其周围,那么问题就不会在q#2中出现

    同样的事情也适用于问题3。如果您将网站包装在API周围,则网站可以使用API本身,而不必成为单独的实体

    您的体系结构看起来很复杂,但如果您做了这些事情,它就会很简单。;-)


    祝你好运

    REST只是启动请求的一种方式。处理请求的核心代码不应该与REST接口或HTTP紧密耦合。我建议设计