从框架外部调用codeigniter API

时间:2013-05-02 20:16:54

标签: codeigniter

我有一个iPhone应用程序,它执行使用codeigniter开发的API的调用。由于我是框架的新手,我想知道这些API通常位于何处?从iPhone应用程序请求到API的URL如下:

http://example.com/site/welcome/admin/api/processingdocuments/

我查看了application/libraries文件夹,还有一些PHP文件,如rest.phpREST_Controller.php。这些是我要找的文件吗?由于上面的URL没有指向特定文件,如何知道正在调用哪个API?提前谢谢。

1 个答案:

答案 0 :(得分:6)

使用Phil Sturgeon's CodeIgniter Restserver时(您正在使用它),在application/controllers目录中设置控制器并扩展其类。

假设你打电话给你的控制器Foobar,它看起来像这样:

class Foobar extends Rest_Controller {

  //... your methods here

}

在这种情况下,您将在http://example.com/foobar

访问此终结点

URL引用您的控制器,而不是直接引用Rest_Controller。

网址如下所示:

http://example.com/{controller}/{method}/{param1}/{param2}/.../{paramN}

如果未指定方法,则默认为index()


此外,Restserver允许您将方法映射到HTTP请求方法。这样

GET example.com/foobar将映射到方法index_get() POST example.com/foobar将映射到方法index_post() ..等等。

我强烈建议您阅读documentation


在您的示例中,您可能希望被调用的控制器位于application/controllers/site

但是,这可能已使用htaccess重写规则(检查.htaccess文件)或通过重新定义的CI路由(检查application/config/routes.php)进行了修改。


如果一切都失败了:

在默认配置下,您应该找到它们,但是,CI在路由方面非常具有可塑性,很难说它们可能位于何处。你最好的选择是grep目录中的单词extends Rest_Controller,因为无论控制器在哪里,他们都会扩展该类。