php Restler路线

时间:2011-11-08 13:22:04

标签: php routes restler

我正在使用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,
);  

当我在浏览器http://[host]/author/[name to pull]/[email to pull]

中进行网址调用时

我收到以下错误:

{
  "error": {
    "code": 404,
    "message": "Not Found"
  }
}

我的作者代码已使用以下方法更新

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

我很难过。

1 个答案:

答案 0 :(得分:0)

Luracast Restler自动路由

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

$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