当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Slim3Framework-我应该为我的API使用路由组吗?》经验,为你挑选了1个好方法。

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

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

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

$app->run();

function getBooks() {
    // Return list of books
}

function getBook($id) {
    // Return a single book
}

或者这个"路线组"一个?

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

$app->group('/books', function () use ($app) {
    $app->get('', function ($req, $res) {
        // Return list of books
    });

    $app->get('/{id:\d+}', function ($req, $res, $args) {
        // Return a single book
    });
});

$app->run();

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



1> 小智..:

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

$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);

虽然它不是很重要,但是将所有代码尽可能有条理地布局是一种很好的做法,路由组允许您这样做.


@red是真的,但IDE很容易理解使用($ app)而不是$ this.我使用上述方法为我的所有应用程序而不是使用$ this.
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有