【问题标题】:php Restler Routesphp Restler 路由
【发布时间】:2011-11-08 13:22:03
【问题描述】:

我正在使用 Restler 2.0,我正在尝试基于 CRUD 示例添加新路由

$o['GET']['author/:name/:email']=array (
  'class_name' => 'Author',
  'method_name' => 'getLogin',
  'arguments' => 
  array (
    'name'  => 0,
    'email' => 1,
  ),
  'defaults' => 
  array (
    0 => NULL,
    1 => NULL,
  ),
  'metadata' => 
  array (
  ),
  'method_flag' => 0,
);  

当我在浏览器中调用 url 时 http://[host]/author/[name to pull]/[email to pull]

我收到以下错误:

{ “错误”: { “代码”:404, “未找到信息” } }

我的作者代码已经用下面的方法更新了

function getLogin($name=NULL,$email=NULL) {
    print "in author, getting login";
    return $this->dp->getLogin($name,$email);
}

我被难住了。

【问题讨论】:

    标签: php routes restler


    【解决方案1】:

    Luracast Restler 自动路由

    首先,routes.php 在生产模式下运行 Restler 时会自动生成

    $r = new Restler(TRUE);
    

    调用时会被覆盖

    $r->refreshCache();
    

    或者在调试模式下运行它,所以它不应该是手工编码的。

    Restler 2.0 正在使用自动映射,更新后的CRUD Example 对此进行了更好的解释。

    你的方法的更正版本应该是

    function get($name=NULL,$email=NULL) {
        print "in author, getting login";
        return $this->dp->getLogin($name,$email);
    }
    

    将映射到

    GET /author/:email/:password
    

    您的方法当前映射到的位置

    GET /author/login/:email/:password
    

    Luracast Restler 自定义路由

    还请注意,您可以使用 PHPDoc 注释来创建自定义映射,并且可以添加多个。例如

    /*
    * @url GET /custom/mapping/:name/:email
    * @url GET /another/:name/:email
    */
    function get($name=NULL,$email=NULL) {
        print "in author, getting login";
        return $this->dp->getLogin($name,$email);
    }
    

    这将创建以下路由,并禁用该方法的自动路由。

    GET /author/custom/mapping/:email/:password
    GET /author/another/:email/:password
    

    【讨论】:

    • 我现在明白了。这实际上就是我想要的。下载的 CRUD 示例有一个随示例提供的 routes.php(示例 06)。我认为这是为了提供特定的映射。谢谢!
    • @CavelleBenjamin 你是对的,没有解释的 routes.php 的存在会造成混乱,我将在下一次更新中删除它。
    • 请不要删除,除非有更简单的方法可以添加特定路线。应用程序特定的 routes.php 文件功能强大且很棒。谢谢!
    • @CavelleBenjamin 我没有删除该功能,只是在开发模式下未使用的文件。添加自定义路由的简单方法是在方法顶部添加 PHPDoc 注释,例如 @url GET /my/custom/url 我正在更新上面的答案以包含示例
    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多