Kos*_*tos 4 php api cakephp cakephp-2.0
我创建了一个功能齐全的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下浏览时(即使使用HTTP POST),这会返回我的网页,而不是像我期望的那样返回json格式的页面.
现在我认为我做错了什么或者我没有正确理解.实际发生了什么,你能帮我一点吗?
谢谢你的推荐!
您需要解析JSON扩展.所以在你的routes.php文件中添加:
Router::parseExtensions('json');
Run Code Online (Sandbox Code Playgroud)
因此,像http://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'));
}
}
Run Code Online (Sandbox Code Playgroud)
这是基础知识.对于POST请求,您将需要使用该RequestHandler
组件.将其添加到您的控制器:
<?php
class NewsController extends AppController {
public $components = array(
'RequestHandler',
...
);
Run Code Online (Sandbox Code Playgroud)
然后你可以检查传入的请求是否使用.json文件扩展名:
public function add() {
if ($this->RequestHandler->extension == 'json') {
// JSON request
} else {
// do things as normal
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5094 次 |
最近记录: |