带有 Backbone、DELETE 和 PUT 请求的 CodeIgniter Rest Server 返回 404

Posted

技术标签:

【中文标题】带有 Backbone、DELETE 和 PUT 请求的 CodeIgniter Rest Server 返回 404【英文标题】:CodeIgniter Rest Server with Backbone, DELETE and PUT requests return 404 【发布时间】:2013-09-27 12:24:18 【问题描述】:

我正在使用主干和 CodeIgniter Rest Server, 来自主干的帖子和获取请求工作正常 但是 put 和 delete 请求者得到 404 错误,响应为 "status":false,"error":"Unknown method."

编辑:我更改了源代码以查看 codeigniter 尝试运行的方法 我的控制器网址是

http://local/host/impacto/index.php/interviews/

put 请求的 url 是

http://localhost/impacto/index.php/interviews/13

codeigniter 运行的函数是 13_put 而不是 input_put

我的控制器

class Interview extends REST_Controller 

function __construct()

    parent:: __construct();


public function index_get()

    echo "get";


public function index_post()

    echo "post";


public function index_put($id)

    echo "update: " . $id;


public function index_delete($id)

    echo "delete: " . $id;


【问题讨论】:

Handling PUT/DELETE arguments in PHP 的可能重复项 不是同一个库,我用的是github.com/philsturgeon/codeigniter-restserver 我遇到了完全相同的问题;向“Interview/id”发送 PUT 调用方法“13_put()”而不是“index_put(13)”,如您所料... 【参考方案1】:

我遇到了同样的问题。因此,这不是错误 - https://github.com/philsturgeon/codeigniter-restserver/issues/255 - 您必须公开指定“index”作为函数(“Interview/index/id”),或者为您的方法命名(“rest_put($id)” ,所以访问了 Interview/rest/id")

【讨论】:

这很重要,因为控制器必须知道要调用哪个方法 - 它正在接收它期望方法名称的参数。您可以随时尝试使用_remap 并根据自定义逻辑路由到您期望的方法。

以上是关于带有 Backbone、DELETE 和 PUT 请求的 CodeIgniter Rest Server 返回 404的主要内容,如果未能解决你的问题,请参考以下文章

使用 PUT/DELETE 方法休息框架的“CSRF 令牌丢失”

AFNetworking 使用 Rails 进行 PUT 和删除

Backbone model.save()正在发送PUT而不是POST

Javascript:获取 DELETE 和 PUT 请求

Mapreduce 作业到 HBase 抛出 IOException: Pass a Delete or a Put

http中的put,delete等请求为啥不安全