如何在REST中使用PUT功能

Using this git-hub library: http://github.com/philsturgeon/codeigniter-restserver How do I use the PUT feature to save its data?

example: example.com/put/some-data/some-data/...

you can use it like this: but take in count that PUT is less commonly used and not supported by most browsers

function somename_put() 
        {  
            $data = array('somedata: '. $this->put('some-data'));  
            $this->response($data);  
        }  

You can do it with an ajax request e.g.

(assumes use of jQuery)

$.ajax({
    url: '/index.php/my_controller/somedata',
    type: 'PUT',
    success: function(result) {
        console.log(result);
    }
});

According this (link: https://github.com/philsturgeon/codeigniter-restserver/blob/master/application/libraries/REST_Controller.php#L915), $this->put only return if passed a param to it (so that works: $username = $this->put('username')). But in REST_Controller, $this->_put_args is protected so, you will extend this class and can access it like: $params = $this->_put_args.

In short (this is just an example, you may improve it as you need);

<?php
// route: /api/users/123
class Users extends REST_Controller
{
    ...

    // update a user's data
    public function user_put() {
        $params = $this->_put_args;

        // you need sanitize input here, "db" is a pseudo
        $username = $db->escape($params['username']);
        $userpass = $db->escape($params['userpass']);

        $db->update(array(
            'username' => $username,
            'userpass' => $userpass
        ), (int) $params['id']);

        if (!$db->error) {
            // suppose right code should be 201 for PUT
            $this->response('Created', 201);
        } else {
            $this->response('Internal Server Error', 500);
        }
    }
}
?>

<script>
// Some ajax library
Ajax("/api/users/123", {
    method: "PUT",
    data: {username:"John", userpass:"new pass"},
    onSuccess: function(){ console.log("Success!"); }
    ...
});
</script>