gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:05:41 24 4
gpt4 key购买 nike

我已经创建了一个功能齐全的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com