1

我目前正在使用 MVC 框架实现 RESTful API。我设置了一些控制器,允许我访问一些通用集合的数据,例如:

GET /products
GET /products/1
GET /users
GET /users/1

我的控制器的结构使其具有用于get()post()、的方法put(),并且delete()与传入请求的 HTTP 动词相匹配。然后在get()函数中,例如,我检查 id 是否存在并锻炼是否获取单个对象或数组,如下所示:

public function action_get()
{
    $id = (int) $this->request->param('id');
    if (empty($id))
    {
        // return an array of everything
    }
    else
    {
         // return a specific object
    }
}

这一切都很好。但是,下一步是与我的产品或用户建立关系,例如:

GET /users/1/transactions
GET /users/1/transactions/1

现在显然我可以将它添加到action_get()上面的方法中,但这会使它变得臃肿。那么我是否应该为事务创建一个单独的控制器并通过一些巧妙的路由将用户 ID 作为参数传递?

4

1 回答 1

1

users可以有很多transactions对吗?所以最好有一个单独的交易控制器。就像您为您的用户所做的那样,为交易做这件事。关注点分离

GET /transactions
GET /transactions/1

这样,您不仅会受益于控制器的简单性,GET而且您可以构建控制器以接受POSTDELETEPUT.

于 2013-10-08T14:58:35.253 回答