php - CakePHP - 为我的 cakephp 应用创建 API

标签 php api cakephp cakephp-2.0

我已经创建了一个功能齐全的 CakePHP 网络应用程序。现在,我想让它更上一层楼,让我的应用程序更加“开放”。因此我想创建一个 RESTful API。在 CakePHP 文档中,我找到了这个链接 ( http://book.cakephp.org/2.0/en/development/rest.html ),它描述了使您的应用程序 RESTful 的方法。我在 routes.php 中添加了所需的两行,如链接顶部所述,现在我想测试它。 我有一个 UsersController.php Controller ,其中有一个函数 add(),它将新用户添加到数据库中。但是当我尝试在 mydomain.com/users.json 下浏览时(即使使用 HTTP POST),这会返回网页,而不是我所期望的 json 格式的页面。

现在我认为我做错了什么或者我没有正确理解某些事情。到底发生了什么,你能帮我一下吗?

提前谢谢你!

最佳答案

您需要解析 JSON 扩展。所以在你的 routes.php 文件中添加:

Router::parseExtensions('json');

所以像 http://example.com/news/index 这样的 URL您现在可以访问 http://example.com/news/index.json .

要实际返回 JSON,您需要修改 Controller 方法。您需要在您的操作中设置一个 _serialize 键,因此您的新闻 Controller 可能如下所示:

<?php
class NewsController extends AppController {

    public function index() {
        $news = $this->paginate('News');
        $this->set('news', $news);
        $this->set('_serialize', array('news'));
    }
}

这是基础。对于 POST 请求,您需要使用 RequestHandler 组件。将其添加到您的 Controller :

<?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
    }
}

关于php - CakePHP - 为我的 cakephp 应用创建 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18314497/

相关文章:

javascript - 在 PHP、MySQL 和 JS 站点上存储琐碎数据的有效方法

php - jms 序列化器性能问题

api - 我可以使用 IP 地址来限制 API 访问吗

css - 如何在 CakePHP 中使用自定义字体?

javascript - AngularJS 获得响应但与 CakePHP 发生错误

php - Laravel mongodb ->getPdo() 返回 null

php - PHP : What's the best practice for catching PHP errors? [closed]

javascript - 如何同时追加和格式化行 Google Sheet API

python - CSRF 攻击是否适用于 API?

cakephp - 如何在 CakePHP 中进行基于表单的文件上传?