4

Magentoでは、REST URLを使用してデータにアクセスし http://localhost/magemto/api/rest/productsます。これは、XML形式で返されるためです。

ただし、チームの要件として、AJAX呼び出しに簡単にアクセスできるようにデータをJSON形式で送信する必要があります。RESTクライアントを使用してヘッダーを「Content-Type:appilcation / json」として含めました。その後、JSON形式で返されます。しかし、私はそれをデフォルトでmagentoAPIによって望んでいます。

4

1 に答える 1

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);
}

これがお役に立てば幸いです。

于 2012-12-28T10:08:33.997 に答える