You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter REST API路由问题:请求接口报Unknown method错误

解决REST API返回"Unknown method"的问题

我来帮你排查这个问题,从你给出的代码来看,核心问题出在REST_Controller的方法命名规范上,下面一步步给你解决:

1. 理解REST_Controller的方法匹配规则

CodeIgniter的REST_Controller组件是基于HTTP请求方法(GET/POST/PUT/DELETE等)来匹配控制器方法的,默认要求方法名必须带上请求方法的后缀(或前缀,取决于版本)。你现在的user_data()和country()没有任何请求方法标识,框架无法识别该用哪个方法处理请求,所以返回"Unknown method"。

2. 修改控制器方法名

根据你要支持的请求方法,给方法加上对应的后缀。比如如果是GET请求,就用方法名_get()的格式,修改后的控制器代码如下:

<?php 
require APPPATH . '/libraries/REST_Controller.php'; 
use Restserver\Libraries\REST_Controller; 

class User extends REST_Controller { 
    function __construct() { 
        parent::__construct(); 
        $this->load->database(); 
    } 

    // 处理GET请求的user_data接口
    function user_data_get() { 
        $this->db->select('*'); 
        $this->db->from('tbl_books'); 
        $sql = $this->db->get(); 
        $result = $sql->result_array(); 
        $this->response($result, 200); 
    } 

    // 处理GET请求的country接口
    function country_get() { 
        // 建议用REST_Controller的response方法输出,而不是echo,保证响应格式正确
        $this->response("hello", 200); 
    } 
}

3. 路由配置保持(或按需调整)

你的现有路由配置不需要修改,保持原样即可:

$route['default_controller'] = 'user'; 
$route['404_override'] = ''; 
$route['translate_uri_dashes'] = TRUE; 
$route['user_data'] = "user/user_data"; 
$route['country'] = "user/country";

框架会自动根据你发送的HTTP请求方法,匹配到对应的xxx_get()方法。

4. 测试注意事项

  • 确保你用正确的HTTP请求方法访问接口:比如访问/user_data时,要用GET请求,不能用POST/PUT等;
  • 如果需要支持多种请求方法,可以添加对应后缀的方法,比如user_data_post()来处理POST请求;
  • 旧版本的REST_Controller可能要求用前缀格式(比如_get_user_data()),如果上面的后缀写法不生效,可以试试前缀写法,同时路由要改成$route['user_data'] = "user/_get_user_data";。

内容的提问来源于stack exchange,提问作者omkara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:58:27