【问题标题】:cakephp rest api POST request invokes index() rather than add()cakephp rest api POST 请求调用 index() 而不是 add()
【发布时间】:2013-10-14 08:59:57
【问题描述】:

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

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

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

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

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

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

这里的请求是一个 GET 给 users/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() 之前需要调用它

谢谢!

【问题讨论】:

    标签: php json api rest cakephp


    【解决方案1】:

    问题显然是我的函数在 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';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 2018-08-04
      • 2017-03-15
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多