我正在使用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”:“未知方法”}
知道如何解决这个问题吗?
答案 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等。
希望它可以解决您的问题。