Slim 3 Framework - 我应该为我的API使用路由组吗?

时间:2015-12-29 00:39:58

标签: php api rest slim

我应该使用这种结构......




 需要'vendor / autoload.php';
 $ app = new \ Slim \ App;

 $ app-> get('/ books','getBooks');
 $ app-> get('/ books / {id}','getBook' );

 $ app-> run();

 function getBooks(){
 //返回书籍列表
}

 function getBook($ id){
 //返回一本书
}
  




或者这个“路线组”一个?


& #xA;
 需要'vendor / autoload.php';
 $ app = new \ Slim \ App;

 $ app-> group('/ books' ,function()使用($ app){
 $ app-> get('',function($ req,$ res){
 //返回书籍列表
});& #xA;
 $ app-> get('/ {id:\ d +}',函数($ req,$ res,$ args){
 //返回一本书
} );
});

 $ APP->运行();
  




什么是更好的方法吗?前者似乎更清洁。我比较新,所以我不知道利弊。




1 个答案:

答案 0 :(得分:12)

通常,您使用路由组来组织类似的资源或内容,以便您可以在代码中明显地看到它们之间的关系。如果您需要在特定组中放置任何特殊条件(如中间件),则路由组也很有用。例如,您的网站上可能有管理员部分,并且您希望在访问控制器之前确保该用户实际上是管理员。

$app->get('panel/admin', 'Admin/DashboardController:index')->add($adminAuth);
$app->get('panel/admin/users', 'Admin/UserController:index')->add($adminAuth);
$app->post('panel/admin/users', 'Admin/UserController:create')->add($adminAuth);

显然,将这​​些路线组合在一起会更有意义,因为它们具有相似的特征。如果你将来需要改变这些特性的任何东西(比如中间件的类型),你只需要做一次。

$app->group('/panel', function() use ($app) {
    $app->group('/admin', function() use ($app) {
        $app->get('', 'Admin/DashboardController:index');
        $app->get('/users', 'Admin/UserController:index');
        $app->post('/users', 'Admin/UserController:create');

    })->add($adminAuth);
})->add($userAuth);

如果你想扩展特定URI的用例,这也很有帮助,所以假设你想在常规用户可以使用的面板中推出一个新功能。

$app->group('/panel', function() use ($app) {

    $app->group('/admin', function() use ($app) {

        $app->get('', 'Admin/DashboardController:index');
        $app->get('/users', 'Admin/UserController:index');
        $app->post('/users', 'Admin/UserController:create');

    })->add($adminAuth);


    $app->get('', 'DashboardController:index');

})->add($userAuth);

虽然它不是很重要,但优良做法是尽可能将所有代码布局,并且路由组允许您执行此操作。