0

我正在开发一个 cakephp JSON REST api——

我正在关注http://book.cakephp.org/2.0/en/development/rest.html上的 REST 教程,并通过 Chrome 扩展“高级 REST 客户端”测试所有内容

我可以按预期运行的唯一途径是通过 GET 请求的 index() - 它返回我的测试数据数组(如预期的那样)

当我 POST 尝试创建新记录时,我收到 404,类似地,我向我的数据库添加了一些测试数据,以便尝试按 ID(36char UUID 字段)对配方的 GET 请求,并将请求路由到索引() 功能。

当我尝试执行除简单获取请求之外的任何操作时,我收到以下响应:

{
code: 404
url: "/users/d8d9701e-2f6e-11e3-af16-2513f388d17e"
name: "Action UsersController::d8d9701e-2f6e-11e3-af16-2513f388d17e() could not be found."
}

这里的请求是对 users/d8d9701e-2f6e-11e3-af16-2513f388d17e 的 GET

在我的 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() 之前需要调用它

谢谢!

4

1 回答 1

0

问题是显然我的函数位于 routes.php 文件的错误区域。

根据:CakePHP - REST POST 功能不适用于默认映射

在 routes.php 中,我将以下内容作为文件的最后几行。

Router::mapResources('users');
Router::parseExtensions('json');

他们需要移到这条线之上:

require CAKE . 'Config' . DS . 'routes.php';
于 2013-10-07T17:27:22.380 回答