我已经创建了一个功能齐全的CakePHP web应用程序。现在,我想把它提升到一个新的水平,让我的应用程序更加"开放"。因此,我想创建一个RESTful API。在CakePHP文档中,我发现了以下链接(http://book.cakephp.org/2.0/en/development/rest.html)它描述了使您的应用程序RESTful的方法。我在routes.php中添加了所需的两行,如链接顶部所示,现在我想测试它。我有一个UsersController.php控制器,其中有一个函数add(),它将新用户添加到数据库中。但是,当我尝试在mydomain.com/users.json下浏览时(即使使用HTTPPOST),这也会返回网页,而不是像我预期的那样返回json格式的页面。
现在我觉得我做错了什么,或者我没有正确理解什么。到底发生了什么事,你能帮我一下吗?
非常感谢!
您需要解析JSON扩展。因此,在routes.php文件中添加:
Router::parseExtensions('json');
所以像这样的URLhttp://example.com/news/index您现在可以访问http://example.com/news/index.json.
然而,要真正返回JSON,您需要修改控制器方法。你需要在你的操作中设置一个_serialize
密钥,这样你的新闻控制器就可以看起来像这样:
<?php
class NewsController extends AppController {
public function index() {
$news = $this->paginate('News');
$this->set('news', $news);
$this->set('_serialize', array('news'));
}
}
这是最基本的。对于POST请求,您需要使用RequestHandler
组件。将其添加到您的控制器:
<?php
class NewsController extends AppController {
public $components = array(
'RequestHandler',
...
);
然后,您可以检查传入请求是否使用.json文件扩展名:
public function add() {
if ($this->RequestHandler->extension == 'json') {
// JSON request
} else {
// do things as normal
}
}