我已经设法在我的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()
时出现同样的错误
取决于您对控制器“类别”的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'
我认为你的问题是控制器的名称与方法的名称相同,试着做一个测试:
如果控制器的名称是:
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结构上遇到过这个问题。
调用方法时不要使用_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");
}
}
?>
让我们称这个方法=>“你的基本网址”/学生/用户
提及要从数据库中获取的详细信息,并在/ 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();
}
}
?>**
请将您的班级名称更改为以大写字母开头,并确保您的文件名也以大写字母开头
<?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();
}
}
?>
只需在控制器顶部的下面写下行。
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';