这是我目前使用Codeigniter Rest_controller的网址
http://localhost/api/user/id/1/format/xml
我的预期产量
http://localhost/api/client/id/1/format/xml
几次尝试后,我得到了答案.
<?PHP defined('BASEPATH') OR exit('No direct script access allowed'); /** * Example * * This is an example of a few basic user interaction methods you could use * all done with a hardcoded array. * * @package CodeIgniter * @subpackage Rest Server * @category Controller * @author Phil Sturgeon * @link http://philsturgeon.co.uk/code/ */ // This can be removed if you use __autoload() in config.PHP OR use Modular Extensions require APPPATH.'/libraries/REST_Controller.PHP'; class Example extends REST_Controller { function __construct() { // Construct our parent class parent::__construct(); // Configure limits on our controller methods. Ensure // you have created the 'limits' table and enabled 'limits' // within application/config/rest.PHP $this->methods['user_get']['limit'] = 500; //500 requests per hour per user/key $this->methods['user_post']['limit'] = 100; //100 requests per hour per user/key $this->methods['user_delete']['limit'] = 50; //50 requests per hour per user/key } function user_get() { if(!$this->get('id')) { $this->response(NULL,400); } // $user = $this->some_model->getSomething( $this->get('id') ); $users = array( 1 => array('id' => 1,'name' => 'Some Guy','email' => 'example1@example.com','fact' => 'Loves swimming'),2 => array('id' => 2,'name' => 'Person Face','email' => 'example2@example.com','fact' => 'Has a huge face'),3 => array('id' => 3,'name' => 'Scotty','email' => 'example3@example.com','fact' => 'Is a Scott!',array('hobbies' => array('fartings','bikes'))),); $user = @$users[$this->get('id')]; if($user) { $this->response($user,200); // 200 being the HTTP response code } else { $this->response(array('error' => 'User could not be found'),404); } } function user_post() { //$this->some_model->updateUser( $this->get('id') ); $message = array('id' => $this->get('id'),'name' => $this->post('name'),'email' => $this->post('email'),'message' => 'ADDED!'); $this->response($message,200); // 200 being the HTTP response code } function user_delete() { //$this->some_model->deletesomething( $this->get('id') ); $message = array('id' => $this->get('id'),'message' => 'DELETED!'); $this->response($message,200); // 200 being the HTTP response code } function users_get() { //$users = $this->some_model->getSomething( $this->get('limit') ); $users = array( array('id' => 1,'email' => 'example1@example.com'),array('id' => 2,'email' => 'example2@example.com'),'fact' => array('hobbies' => array('fartings',); if($users) { $this->response($users,200); // 200 being the HTTP response code } else { $this->response(array('error' => 'Couldn\'t find any users!'),404); } } public function send_post() { var_dump($this->request->body); } public function send_put() { var_dump($this->put('foo')); } }
只需更改此代码即可
<?PHP defined('BASEPATH') OR exit('No direct script access allowed'); /** * Example * * This is an example of a few basic user interaction methods you could use * all done with a hardcoded array. * * @package CodeIgniter * @subpackage Rest Server * @category Controller * @author Phil Sturgeon * @link http://philsturgeon.co.uk/code/ */ // This can be removed if you use __autoload() in config.PHP OR use Modular Extensions require APPPATH.'/libraries/REST_Controller.PHP'; class Example extends REST_Controller { function __construct() { // Construct our parent class parent::__construct(); // Configure limits on our controller methods. Ensure // you have created the 'limits' table and enabled 'limits' // within application/config/rest.PHP $this->methods['client_get']['limit'] = 500; //500 requests per hour per user/key $this->methods['client_post']['limit'] = 100; //100 requests per hour per user/key $this->methods['client_delete']['limit'] = 50; //50 requests per hour per user/key } function client_get() { if(!$this->get('id')) { $this->response(NULL,404); } } function client_post() { //$this->some_model->updateUser( $this->get('id') ); $message = array('id' => $this->get('id'),200); // 200 being the HTTP response code } function client_delete() { //$this->some_model->deletesomething( $this->get('id') ); $message = array('id' => $this->get('id'),200); // 200 being the HTTP response code } function clients_get() { //$users = $this->some_model->getSomething( $this->get('limit') ); $users = array( array('id' => 1,404); } } public function send_post() { var_dump($this->request->body); } public function send_put() { var_dump($this->put('foo')); } }