我正在使用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);
}
我很难过。
答案 0 :(得分:0)
首先,在生产模式下运行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
另请注意,您可以使用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