在给定条件的情况下,如何在CodeIgniter中构建控制器

时间:2012-05-30 19:50:39

标签: php codeigniter

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

这不是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不是我系统中唯一的控制器。

4 个答案:

答案 0 :(得分:2)

你必须考虑几件事

  1. 他们是否相互依存?
  2. 您必须有一些特定原因来维护2个Web API。
  3. 如果他们不相互依赖,那么我会建议你这样做

    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中完成了。

    所以你可以分别创建文件夹并继续它。!

答案 1 :(得分:1)

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

没有测试过dunno它是否会以你想要的方式工作。

Codeigniter Routing

答案 2 :(得分:1)

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

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

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

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

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

答案 3 :(得分:0)

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