【问题标题】:SLIM API: Multiple/Alternative routes for same actionSLIM API:同一操作的多个/替代路由
【发布时间】:2014-08-11 23:07:18
【问题描述】:

我们正在使用 SLIM 框架构建 API。在我们的 API 层次结构中,一些特定的操作将可用于多个路径。这是一个例子:

$app->get('/surveys/:sid/contacts/:cid', function ($sid, $cid) use ($user) {
    // Do stuff
});

OR

$app->get('/contacts/:cid/surveys/:sid', function ($cid, $sid) use ($user) {
    // Do same stuff
});

我们已经看到了一些方法(例如Multiple routes with the same anonymous callback using Slim Framework)并且能够通过引用匿名函数来做到这一点。

$app->get('/surveys/:sid/contacts/:cid', $ref = function ($sid, $cid) use ($user) {
    // Do stuff
});

AND

$app->get('/contacts/:cid/surveys/:sid', $ref); // Calls the same stuff, but with different order of arguments (wrong)

但是我们如何处理传递参数的顺序变化(“$sid, $cid”和“$cid, $sid”)?

谢谢!


感谢安德鲁·史密斯的回答!我们将使用稍微不同的实现:

function doStuff($user, $sid, $cid) {
    // Do stuff
}

$app->get('/surveys/:sid/contacts/:cid', function ($sid, $cid) use ($user) {
    doStuff($user, $sid, $cid);
});

$app->get('/contacts/:cid/surveys/:sid', function ($cid, $sid) use ($user) {
    doStuff($user, $sid, $cid);
});

【问题讨论】:

    标签: php api slim


    【解决方案1】:

    由于您使用的是同一个函数,因此除了创建另一个调用第一个函数的函数之外,没有其他方法可以做到这一点。请参见下面的示例。

    <?php
    
    function firstFunction ($sid, $cid) {
        // Do stuff
    };
    
    function secondFunction ($cid, $sid) {
        return firstFunction($sid, $cid);
    };
    
    $app->get('/surveys/:sid/contacts/:cid', 'firstFunction');
    
    $app->get('/contacts/:cid/surveys/:sid', 'secondFunction');
    

    【讨论】:

    • 我们将使用稍微不同的方法(在问题下方添加),但这基本上是答案。但是,您的答案不包括 $user 变量,是吗?还是谢谢!
    猜你喜欢
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    相关资源
    最近更新 更多