【问题标题】:Rest API and admin in the same application在同一个应用程序中休息 API 和管理员
【发布时间】:2017-06-13 16:17:42
【问题描述】:

我是构建 API 的新手,我使用 MVC 框架制作了第一个 API:codeigniter,带有 chris kacerguis rest 实现。

我不太确定这是不是最好的想法,因为我相信框架可能不是仅仅为了 API 的目的而“苗条”或轻量级。

我打算做一个移动应用、一个管理员和一个网站,这样三者就可以使用 Api 的服务了。

将 API、网站和管理员放在同一个项目中是不是一个坏主意?有哪些优点和缺点?还是最好的架构方法?

否则我将拥有:一个用于 API 的 Codeigniter 项目和另一个用于网站和管理员的 Codeigniter 项目

谢谢

【问题讨论】:

  • 你在使用像 Doctrine 这样的 ORM 吗?

标签: rest codeigniter api architecture restful-architecture


【解决方案1】:

构建 REST API 的目的是让您只需为您的业务模型构建一个项目。这允许您在任何平台上构建任意数量的应用程序,只需要您以不同的方式使用 API。这实质上将用户界面与业务逻辑分离/解耦,反之亦然。

您应该为 REST API 创建单独的项目,并且每个 UI 项目也应该是单独的项目。这允许您更改任何一个项目中的底层代码、语言和平台,而不会破坏任何其他项目,只要 API 签名保持不变。

例如,您可以使用 Codeignitor 构建网站的实时版本,同时使用 AngularJS 开发另一个独立项目。当您的 AngularJS 项目完成后,您只需更换服务器上的项目(或创建一个全新的网站或服务器),仍然允许您在需要时使用其他项目。此外,假设您没有更改 API 签名,您可能决定要将 API 移动到不同的平台、语言或数据库、开发它并在完成后交换实现,从而不会对您的任何 UI 项目进行更改。

【讨论】:

  • 我还想评论一下,除非您的管理应用程序与您的客户端网站/应用程序有显着不同,否则您应该为用户分配一个角色并根据用户角色从 API 显示/请求数据。
【解决方案2】:

在我的项目中,我实现了 2 种类型的控制器 - REST 和 API。 Admin js gui 使用 REST,其他世界使用 API。用 symfony 的小弟 silex 框架就可以了。

【讨论】:

    【解决方案3】:

    您可以在“controllers”文件夹中创建文件夹来组织您的项目并使用相同的项目/环境配置:

    controllers/Home.php  
    controllers/api/MyApi.php 
    controllers/admin/Admin.php
    

    编辑:您也将共享模型和库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多