CodeIgniter REST API调用不存在的方法

时间:2013-05-27 19:45:43

标签: php codeigniter rest backbone.js

使用Phil Sturgeon的Codeigniter REST SERVER,我已经设置了一个基本的REST服务器来与Backbone应用程序进行交互。问题是,只要applcation尝试向正确的URI发出DELETE请求(例如,api / object / 7,其中7是相关的ID号),REST就会返回404 Not Found错误。一点挖掘显示它试图在控制器内到达nonxistint 7_delete而不是调用index_delete。

我已检查过请求,并且他们正在路由到正确的网址;我还检查过没有设置的自定义路由会干扰而且没有。建议?

编辑:有关更多详细信息,Backbone路由设置如下:

urlRoot: 'api/objective/',

CI中的Objective控制器设置如下:

class Objective extends REST_Controller {

  /**
   *  Respond to a POST request;
   *  - If given an ID, update an existing record
   *  - If given no ID, create a new record
   */
  public function index_post() {
    // code here...
  }

  /**
   *  Delete an existing record from a passed URL
   */
  public function index_delete($id) {
    // Code here...
  }

  /**
   *  Get a single record
   */
  public function index_get($id) {
    // Code here...
  }

  /**
   *  Get the full objectives list
   */
  public function index_get() {
    // Code here...
  }
}

这与原始示例文件中提供的示例很接近。 CI路由没有任何设置。

1 个答案:

答案 0 :(得分:-1)

使用像http://example.com/api/objective/deletecontent/id/7

这样的网址时可能很容易
    public function deletecontent_get() {
        if(!$this->get('id')) {$this->response(null,400)}
          $run = $this->some_model->delete_content_by_id($this->get('id));
          if($run) $this->response(true,200);
          else $this->response(null,304);
    }