Как получить ответ REST API в формате JSON по умолчанию в Magento

В magento, поскольку мы используем URL REST для доступа к данным, в качестве http://localhost/magemto/api/rest/products он возвращается в формате XML.

Но в качестве требования моей команды я должен отправить данные в формате JSON для быстрого доступа к вызовам AJAX. Я использовал REST-клиент для включения заголовка в качестве «Content-Type: appilcation/json» .. Затем он возвращается в формате JSON .. Но я хочу, чтобы он был по умолчанию API-интерфейсом magento.

4
nl ja de

1 ответы

Эй, у меня есть решение для этого, я хотел бы поделиться с вами.

Сначала перейдите в корневую папку magento, затем перейдите по следующему пути

<�Код> \ приложение \ код \ ядро ​​\ 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);
}

Надеюсь, это поможет вам.

12
добавлено
Я ранил, чтобы переопределить это в локальную папку, что было бы лучше, поскольку это не очень хорошая практика.
добавлено автор chanz, источник
Я тестировал это, и он отлично работает в версии 1.7.0.2 magento
добавлено автор chanz, источник
Да, поиск google, как переопределить класс модели magento, вы можете найти там, на самом деле есть два пути: поиск, вы получите много сообщений, связанных с этим
добавлено автор chanz, источник
Благодарю вас так много yaar ..
добавлено автор Pavan Kumar, источник
Но имел ли смысл переместить этот файл request.php в локальную папку в app/core/code/local?
добавлено автор Pavan Kumar, источник
данные отображаются на странице браузера, но не предназначены для вызова AJAX. Я думаю, что это междоменная проблема.
добавлено автор Pavan Kumar, источник
Я думаю, что это решение не устанавливает JSON по умолчанию, а как только формат ответа. Таким образом, ответы xml не будут возможны вообще.
добавлено автор Rouzbeh, источник