0

我正在尝试使用 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 不是我系统中唯一的控制器。

4

4 回答 4

2

你必须考虑几件事

  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 个不同的模型。

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

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

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

于 2012-05-31T07:30:54.257 回答
1

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

没有测试不知道它是否会按照你想要的方式工作。

Codeigniter 路由

于 2012-05-30T19:56:00.893 回答
1

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

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

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

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

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

于 2012-05-30T19:56:19.737 回答
0

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

于 2012-05-31T07:18:06.847 回答