1

我一直在构建一个rest api(使用Phil Sturgeons Codeigniter-Restserver)并且我一直密切关注以下教程:

http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/

特别是我一直在关注本教程的这一部分:

function user_get()  
{  
    // respond with information about a user  
}  

function user_put()  
{  
    // create a new user and respond with a status/errors  
}  

function user_post()  
{  
    // update an existing user and respond with a status/errors  
}  

function user_delete()  
{  
    // delete a user and respond with a status/errors  
}

并且我一直在为 api 可访问的每个数据库对象编写上述函数,并且:

function users_get()  //    <-- Note the "S" at the end of "user"
{  
    // respond with information about all users
} 

我目前有大约 30 个数据库对象(用户、产品、客户端、事务等),所有这些对象都有为它们编写的上述函数,所有函数都转储到 /controllers/api/api.php 中,现在这个文件已经增长相当大(超过 2000 行代码)。

问题 1:

有没有办法将这个 api 文件拆分为 30 个文件,并将与单个数据库对象相关的所有 api 函数保存在一个地方,而不是将所有 api 函数转储到一个文件中?

问题2:

我还想在我当前的模型函数(非 api 相关函数)和 api 使用的函数之间保持分离。
我应该这样做吗?我应该在这里使用推荐的方法吗?例如,我应该编写 api 使用的单独模型,还是可以将给定数据库对象的所有模型函数(非 api 函数和 api 函数)保留在同一个文件中?

任何反馈或建议都会很棒..

4

1 回答 1

3

您可以像创建常规控制器一样创建 api 控制器;你可以对模型做同样的事情。

application/controllers/api/users.php

class Users extends REST_Controller{
    function user_post(){
        $this->users_model->new_user()
    ...

 POST index.php/api/user

--

application/controllers/api/transactions.php

class Transactions extends REST_Controller{
    function transaction_get(){
        $this->transactions_model->get()
    ...

GET index.php/api/transaction

我还想在我当前的模型函数(非 api 相关函数)和 api 使用的函数之间保持分离。

我不明白为什么你不能使用相同的方法,只要它们返回你需要的东西。

于 2013-05-12T19:01:16.453 回答