Codeigniter RESTful API - {“status”:false,“error”:“未知方法。”}

问题描述 投票:5回答:5

我已经设法在我的Codeigniter应用程序中设置RESTful API。现在我想从我的MySQL数据库中获取一些数据,所以在我的Codeigniter模型文件夹中我创建了一个名为category_model.php的模型:

<?php
  Class category_model extends CI_Model {
      var $table_name = 'category';

     function get_all_categories()
     {
       $this->db->select('*');
       $this->db->from($this->table_name);
       return $this->db->get();
     }
 }
?>

然后在Codeigniter controller-folder中创建了一个category.php文件:

<?php

 include(APPPATH.'libraries/REST_Controller.php');

 class Category extends REST_Controller {

  function __construct()
    {
        parent::__construct();
        $this->load->model('category_model');
    }

  function category_get()
    {
        $data = $this->category_model->get_all_categories();
        $this->response($data);
    }

 }

?>

现在,当我输入http://localhost/myproejcts/ci/index.php/category/category - 我得到错误{"status":false,"error":"Unknown method."} ??

问题是什么?

[UPDATE] =设置function index_post()时出现同样的错误

php mysql codeigniter rest
5个回答
4
投票

取决于您对控制器“类别”的HTTP请求,它将调用相关方法:

public function index_get()
{   
    echo "GET_request";
}   

public function index_post()
{
    echo "POST_request";
}

public function index_put()
{
    echo "PUT_request";
}

public function index_patch()
{
    echo "PATCH_request";
}

public function index_delete()
{
    echo "DELETE_request";
}

因此,将您的方法重命名为'index_get'


3
投票

我认为你的问题是控制器的名称与方法的名称相同,试着做一个测试:

如果控制器的名称是:

class Test extends CI_Controller{
    //your method name is different from the name of controller class
    public function testget_get(){ 
        echo $this->response(array('test'=> 'test'), 200);
    }
}

我在hmvc结构上遇到过这个问题。


1
投票

调用方法时不要使用_get,_post ..例如,你有一个方法users_get

<?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    require APPPATH . '/libraries/REST_Controller.php';

    class Student extends REST_Controller {
        function __construct() {
            // Construct the parent class
            parent::__construct();
        }

        public function users_get() {
            $this->response("my first api");
        }
    }

?>   

让我们称这个方法=>“你的基本网址”/学生/用户


0
投票

提及要从数据库中获取的详细信息,并在/ restapi / application / config / database文件中的数据库文件中输入正确的名称并运行代码。

由于数据库名称不正确而发生此错误

**<?php
  Class category_model extends CI_Model {
      var $table_name = 'category';
     function get_all_categories()
     {
       $this->db->select('name, email');
       $this->db->from($this->table_name);
       return $this->db->get();
     }
 }
?>**

0
投票

请将您的班级名称更改为以大写字母开头,并确保您的文件名也以大写字母开头

<?php
  Class Category_model extends CI_Model {
      var $table_name = 'category';

     function get_all_categories()
     {
       $this->db->select('*');
       $this->db->from($this->table_name);
       return $this->db->get();
     }
 }
?>

0
投票

只需在控制器顶部的下面写下行。

if (!defined('BASEPATH')) exit('No direct script access allowed');

use Restserver\Libraries\REST_Controller;

require APPPATH . 'libraries/REST_Controller.php';

require APPPATH . 'libraries/Format.php';
© www.soinside.com 2019 - 2024. All rights reserved.