我正在考虑使用REST插件:https://github.com/kvz/cakephp-rest-plugin用于提供可用于开发PhoneGap应用程序的API。
我设法设置了插件,如文档中所示,但是我的JSON中没有数据...我在这里看到了一些提到相同问题的问题:https://github.com/kvz/cakephp-rest-plugin/issues?state=closed我是已经尝试过但无济于事。
有人有这个问题吗?该插件在一年内没有更新,所以我想知道Cake的内部工作是否已经改变导致它破坏?
无论如何,这是我的代码:
// 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'));
}
在我的路线中:
Router::mapResources(array('users'));
Router::parseExtensions('rss','json','xml');
这是返回的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"
}
}
答案 0 :(得分:1)
Kevin的插件是为Cake 1.3构建的(我之前用它构建了一个应用程序)。它几乎被Cake 2.x恕我直言所淘汰。只有在需要记录或限速或http身份验证时才应该使用它。
我回答了一个类似的问题,前面解释简化的REST Cake 2.x提供: https://stackoverflow.com/questions/10099449/creating-a-rest-api-with-cakephp/10099878#10099878
更新:
在设置中检查提取数组。格式随着最后的1.3版本而改变,但是readme.md的一部分没有得到更新(即推文示例是错误的)。请参阅“警告 - 向后兼容性破坏”部分,或者只检查组件源代码$settings
数组以获取正确的格式。
正确的格式:
public $settings = array(
'actions' => array(
'test' => array(
'extract' => array('users')