Tell me more ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I'm looking into using the REST plugin here: https://github.com/kvz/cakephp-rest-plugin for providing an API that I can use to develop a PhoneGap application.

I've managed to setup the plugin as shown in the documentation, however I'm getting no data back in my JSON... I've seen some issues mentioning the same problem here: https://github.com/kvz/cakephp-rest-plugin/issues?state=closed which I have tried implementing but to no avail.

Has anyone had this issue themselves? The plugin hasn't been updated in a year, so I'm wondering if the inner-workings of Cake have changed causing it to break?

In any case here is my code:

// UsersController
public $components = array (
        'Rest.Rest' => array(
            'catchredir' => true,
            'actions' => array(
                'extract' => array(
                    'test' => array('users'),
                ),
            ),
            'ratelimit' => array(
                'enable' => false
            )
        ),
    );

public function test(){
        $users = array(
            array('name' => 'user-1'),
            array('name' => 'user-2'),
            array('name' => 'user-3')
        );
        $this->set(compact('users'));
    }

and in my routes:

Router::mapResources(array('users'));

Router::parseExtensions('rss','json','xml');

and here is the returned JSON:

{
    "data": {
        "User": []
    },
    "meta": {
        "status": "ok",
        "feedback": [],
        "request": {
            "http_host": "sample.com",
            "http_user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit\/537.22 (KHTML, like Gecko) Chrome\/25.0.1364.29 Safari\/537.22",
            "server_addr": "##.##.###.###",
            "remote_addr": "##.###.###.###",
            "server_protocol": "HTTP\/1.1",
            "request_method": "GET",
            "request_uri": "\/users\/test.json",
            "request_time": 1357946870
        },
        "credentials": {
            "class": null,
            "apikey": null,
            "username": null
        },
        "time_epoch": "1357946871",
        "time_local": "Fri, 11 Jan 2013 15:27:51 -0800",
        "version": "0.3"
    }
}
share|improve this question

1 Answer

up vote 1 down vote accepted
+50

Kevin's plugin was built for Cake 1.3 (I built an app with it a while ago). It's pretty much been obsoleted by Cake 2.x IMHO. You should only use it if you need logging or rate-limiting or http authentication.

I answered a similar question a while back explaining the simplified REST Cake 2.x provides: Creating a REST API with CakePHP

UPDATE: Check your extract array in settings. The format changed with the last 1.3 version but part of readme.md didn't get updated (i.e. the tweets example is wrong). See section "Warning - Backwards compatibility breakage" or just check the component source code $settings array for the correct formats.

Correct format for you:

public $settings = array(
    'actions' => array(
        'test' => array(
            'extract' => array('users')
share|improve this answer
Says in the updates that it has been updated to work with CakePHP 2.0 – Cameron Jan 12 at 12:17
Updated to work with Cake 2, doesn't mean Cake 2 needs it to support REST/json calls. – Costa Jan 12 at 21:29
It's the authentication part I'm most interested in. But the logging and rate-limiting would also be useful. – Cameron Jan 14 at 21:09
Updated my answer. – Costa Jan 14 at 21:27

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.