我正在尝试使用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 不是我系统中唯一的控制器。
你必须考虑这几件事
- 它们是相互依存的吗?
- 您必须有一些特定的原因来维护 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 方案没有任何问题。 这就是您应该在代码点火器中调用控制器 -> 操作的方式。如果您希望控制器很瘦,请在库中移动实际处理代码,并为每个请求调用库。或者,您可以使用重写规则将工作分配到不同的控制器。