在给定条件下,如何在代码点火器中构建控制器


How do I structure my Controllers in CodeIgniter given the conditions

我正在尝试使用CodeIgniter作为PHP框架构建一个Web API。

这不是 REST API。它只是一个Web api,这意味着所有查询都将是POST查询。

典型的查询如下所示

http://host/api1/user/get_name

http://host/api2/user/get_name

在这种情况下,api1 和 api2 成为控制器,用户成为它下的方法。

对此不满意,因为那样我的 api1 和 api2 类变得太大,而且我不喜欢在单个类中混合不相关的代码。

我能做什么?我可以使用我的 .htaccess 文件或路由配置,以便每次服务器收到 ''^api'' 形式的请求时,它都会将其转发到适当的控制器吗?

请注意,api1 和 api2 不是我系统中唯一的控制器。

你必须考虑这几件事

  1. 它们是相互依存的吗?
  2. 您必须有一些特定的原因来维护 2 个 Web API。

如果它们不是相互依赖的,那么我会建议你这样做

http://host1/user/get_name
http://host2/user/get_name

如果它们是相互依赖的,那么你必须这样做

http://host/api1/user/get_name
http://host/api2/user/get_name

这背后的原因是您不需要维护 2 种不同的模型。

例如,如果您在 X_model.php 中进行了一些更改,则必须将其上传到两个服务器上。

您可以在控制器下创建文件夹。我对此非常肯定。我已经在codeigniter 1.7做到了.

因此,您可以分别创建文件夹并继续使用。!

你可以

试试$route['api(:num)'] = "api$1/";

还没有测试过 dunno 它是否会按照您想要的方式工作。

代码点火器路由

什么是 API1 和 API2?它们是否相互独立?

如果是这样,我建议您为两个 API 使用单独的子域,以便您可以这样做:

http://api1.example.com/user/get_name
http://api2.example.com/user/get_name

这在两个 API 之间提供了明确的分离,并允许User成为控制器而不是整个 API。

这将要求您在托管根中创建两个目录(api1, api2),"安装"两个CI实例并将子域路由到相应的目录。

我认为您的 URL 方案没有任何问题。 这就是您应该在代码点火器中调用控制器 -> 操作的方式。如果您希望控制器很瘦,请在库中移动实际处理代码,并为每个请求调用库。或者,您可以使用重写规则将工作分配到不同的控制器。