Codeigniter REST API提供未知方法?

时间:2015-07-26 23:45:20

标签: php codeigniter rest

我正在使用https://github.com/chriskacerguis/codeigniter-restserver和codeigniter。 我正在尝试添加资源,并启用带有id的get方法。 我添加了继承REST_Controller的Users控制器。我添加了一些方法,index_get,index_post。他们都很完美。

然后我尝试在index_get函数中添加一个id参数(这样你就可以访问一个特定的用户 - 例如localhost/proj/Users/4你会给你id为4的用户吗?

class Users extends REST_Controller {

    public function index_get($id) {
        echo $id;
    }

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

}

然后我尝试使用postman访问此get方法: localhost/proj/index.php/users/3但是回复了:

  

{“status”:false,“error”:“未知方法”}

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

根据CodeIgniter Rest Server doc,您可以访问请求参数,如下所示:

$this->get('blah'); // GET param 
$this->post('blah'); // POST param 
$this->put('blah'); // PUT param

所以,用户类应该是那样..

class Api extends REST_Controller {

    public function user_get() {
        echo $this->get('id');
    }

    public function user_post() {
       echo $this->post('id');
    }
}

使用邮递员进行测试时,您可以按以下方式提出要求:

对于get方法,

http://localhost/proj/api/user?id=3
http://localhost/proj/api/user/id/3

对于post方法,

http://localhost/proj/api/user
form-data : [id : 2]

希望,它对你有用。

答案 1 :(得分:0)

我遇到了麻烦,这种解决方案对我有用。

例如,您有一个名为Api.php的控制器文件,如下所示:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use chriskacerguis\RestServer\RestController;

class Api extends RestController {

function __construct() {
    parent::__construct();
}

function user_get($id) {
    echo $id;
}

function user_put() {

}

function user_post() {

}

function user_delete() {

}
}

/* End of file Api.php */
/* Location: ./application/controllers/Api.php */

在浏览器上,您不需要写http://localhost/api/user_get/1,而不必写http://localhost/api/user/1,其中1是[:id,],因为单词 _get user 一词之后>> put , _post _delete 。因此,如果您使用的是get方法,则应在例如此类的类中编写函数。 user_get,users_get,students_get等。

希望它可以解决您的问题。