我正在开发一个cakephp JSON REST api -
我正在http://book.cakephp.org/2.0/en/development/rest.html关注REST教程并通过Chrome扩展“Advanced REST Client”测试所有内容
我能按预期运行的唯一途径是通过GET请求的index() - 它返回一个我的测试数据数组(如预期的那样)
当我尝试创建新记录时,我收到404,同样我向我的数据库添加了一些测试数据,以便通过ID(36char UUID字段)和请求路由尝试GET Request for recipe到index()函数。
当我尝试做一些简单的获取请求时,我收到以下回复:
{
code: 404
url: "/users/d8d9701e-2f6e-11e3-af16-2513f388d17e"
name: "Action UsersController::d8d9701e-2f6e-11e3-af16-2513f388d17e() could not be found."
}
此处的请求是对用户的GET / d8d9701e-2f6e-11e3-af16-2513f388d17e
在我的routes.php文件中:
Router::resourceMap(array(
array('action' => 'index', 'method' => 'GET', 'id' => false),
array('action' => 'view', 'method' => 'GET', 'id' => true),
array('action' => 'add', 'method' => 'POST', 'id' => false),
array('action' => 'edit', 'method' => 'PUT', 'id' => true),
array('action' => 'delete', 'method' => 'DELETE', 'id' => true),
array('action' => 'update', 'method' => 'POST', 'id' => true)
));
Router::mapResources('users');
Router::parseExtensions('json');
我的UsersController.php看起来像是:http://pastebin.com/bDxRLbTP
注意评论的访问控制规则似乎对我的问题没有影响。无论如何,我已经尝试过,有没有控制规则,我不是100%肯定存在于正确的地方。但我认为由于一些CORS问题,POST无法正常工作。但是,在尝试查找特定记录时,它无法解释GET问题。
根据教程,我觉得我实际上不需要Router :: resoureMap功能,但我还是把它扔了以防万一。我也尝试将它放在Router :: mapResources调用下面 - 但在教程中它说:
“通过覆盖默认资源图,将来对mapResources()的调用将使用新值。”
所以我很确定在调用mapResources()
之前需要调用它谢谢!
答案 0 :(得分:0)
问题是,我的函数显然位于routes.php文件的错误区域。
根据:CakePHP - REST POST functionality not working with default mapping
在routes.php中,我将以下内容作为文件的最后一行。
Router::mapResources('users');
Router::parseExtensions('json');
他们需要被移到这一行之上:
require CAKE . 'Config' . DS . 'routes.php';