【问题标题】:How do I test the output of a JSON data view in CakePHP?如何在 CakePHP 中测试 JSON 数据视图的输出?
【发布时间】:2013-03-02 19:12:43
【问题描述】:

所以我正在尝试创建一个 Android 移动应用程序,并且我使用 CakePHP 作为我的服务器端。我不需要任何 HTML 视图,我只会使用 JSON 对象进行响应。

我查看了http://book.cakephp.org/2.0/en/core-libraries/components/request-handling.html#RequestHandlerComponent 并创建了这个:

class LocationsController extends AppController
{
    public $helpers = array('Html', 'Form');
    public $components = array('RequestHandler');
    function index()
    {
        $locations = $this->Location->getNearest();
        $this->set(compact('locations'));
        $this->set('_serialize', array('locations'));
    }
}

我已将此添加到我的routes.php

Router::mapResources('locations');
Router::parseExtensions('json');

当我运行它时,除了默认的 CakePHP 布局样式外,什么都没有显示。如果我删除 index.ctp 视图文件,我会收到一个错误,即找不到视图文件。为什么它仍然需要视图文件?我认为使用序列化方法不需要视图。我尝试查看 Google Chrome 开发者控制台,但没有包含 JSON 对象的响应。但是,MySQL 的表现非常好。

【问题讨论】:

    标签: json debugging cakephp dataview requesthandler


    【解决方案1】:

    $this->render(false);放在中间

    public $components = array('RequestHandler');
    

    function index()
    

    现在它不再需要 index.ctp 文件了。

    更多信息请参见this link

    【讨论】:

    • 错误:语法错误,意外的 '$this' (T_VARIABLE),期望函数 (T_FUNCTION)。无论哪种方式,这只会消除浏览器中的所有输出。如果我使用 render(false),我将无法测试或查看我的 JSON 数据。
    • 哦,该死。是的,没错。我怀疑那会完成这项工作,但这是使用 JSON 数据。那我帮不了你了,抱歉。
    • 谢谢 =)。我使用了 public $viewClass = 'Json';它似乎已经在浏览器端成功了。不过,我还没有在 Android 端测试过它。我只是担心 Android 将如何接收数据。我不希望它接收任何 html、css 或 javascript 内容。
    【解决方案2】:

    我只是使用 REST API 做了同样的事情,因为我想要 JSON 中的响应。 我所做的是我使用了 Chrome 高级休息客户端。我使用适当的 GET 方法向我的本地主机服务器发出请求,并且它成功了。

    点赞:GET /users/view/103.json

    你会得到如下响应:

    {"users":{"User":{"id":"103","username":"abc","password":"xyz",
     "email-id":"abc@xyz.com"}}} 
    

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多