首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Slim 3框架-我应该在API中使用路由组吗?

Slim 3框架-我应该在API中使用路由组吗?
EN

Stack Overflow用户
提问于 2015-12-29 00:39:58
回答 1查看 7.1K关注 0票数 6

我应该用这个结构..。

代码语言:javascript
运行
复制
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
}

还是这个“路线小组”?

代码语言:javascript
运行
复制
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();

更好的方法是什么?前者似乎要干净得多。我是比较新的,所以我不知道利弊。

EN

Stack Overflow用户

回答已采纳

发布于 2016-10-27 14:15:59

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

代码语言:javascript
运行
复制
$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);

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

代码语言:javascript
运行
复制
$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的用例,那么就让我们假设您希望在面板中推出一个常规用户可以使用的新特性,这也是很有帮助的。

代码语言:javascript
运行
复制
$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);

尽管这并不是很重要,但最好的做法是尽可能地布局您的所有代码,路由组允许您这样做。

票数 16
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34502856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档