如何在Magento中以默认方式获取JSON格式的REST API响应

Pav*_*mar 4 oauth magento oauth-2.0 magento-1.4 magento-1.7

在magento中,因为我们使用REST URL来访问数据,因为 http://localhost/magemto/api/rest/products它以XML格式返回.

但是作为我的团队要求,我应该以JSON格式发送数据以轻松访问AJAX调用.我使用REST客户端将头文件包含为'Content-Type:appilcation/json'..然后它以JSON格式返回..但我希望它默认为magento API ..

cha*_*anz 12

嘿,我确实有这方面的解决方案,我想与你分享.

首先转到magento根文件夹,然后转到以下路径

\app\code\core\Mage\Api2\Model\Request.php

转到方法getAccepTypes()并使用下面的代码更改它将满足您的要求.

public function getAcceptTypes()
{
    $qualityToTypes = array();
    $orderedTypes   = array();

    foreach (preg_split('/,\s*/', $this->getHeader('Accept')) as $definition) {
        $typeWithQ = explode(';', $definition);
        $mimeType  = trim(array_shift($typeWithQ));

        // check MIME type validity
        if (!preg_match('~^([0-9a-z*+\-]+)(?:/([0-9a-z*+\-\.]+))?$~i', $mimeType)) {
            continue;
        }
        $quality = '1.0'; // default value for quality

        if ($typeWithQ) {
            $qAndValue = explode('=', $typeWithQ[0]);

            if (2 == count($qAndValue)) {
                $quality = $qAndValue[1];
            }
        }
        $qualityToTypes[$quality][$mimeType] = true;
    }
    krsort($qualityToTypes);

    foreach ($qualityToTypes as $typeList) {
        $orderedTypes += $typeList;
    }

    unset($orderedTypes);
    $orderedTypes=Array
        ("application/json" => 1);

    return array_keys($orderedTypes);
}
Run Code Online (Sandbox Code Playgroud)

希望这对你有所帮助.

  • 我喜欢把它覆盖到本地文件夹,这是最好的,因为这不是一个好习惯. (5认同)
  • 我测试了这个,它在magento 1.7.0.2版中运行良好 (2认同)
  • 是的搜索google如何覆盖magento模型类,你可以在那里找到,实际上有两种方法,搜索你会得到很多与此相关的帖子 (2认同)