Magento 2 REST API-Verwendung mit Beispielen


Antworten:


13

Magento 2 unterstützt REST (Representational State Transfer) und SOAP (Simple Object Access Protocol), ähnlich wie die alte Version von Magento, die wir gewohnt waren. Die offizielle Dokumentation basiert hauptsächlich auf einer Roh-Curl-Anfrage ohne Beispiele in einer bestimmten Sprache. PHP ist das, was wir tun, und es wird auch viele Leute geben, die es verwenden. Deshalb haben wir versucht, Ihnen echte PHP-Beispiele für die Verbindung und Verwendung der Magento 2-API zu geben.

Es gibt drei Benutzertypen, die in Magento Zugriff auf die API haben:

1) Gastbenutzer Sie haben mit anonymer Berechtigung Zugriff auf Ressourcen.

2) Administrator / Integration Sie haben Zugriff auf Ressourcen, für die durch die Konfiguration autorisiert wurde.

3) Kunde Sie haben Zugriff auf Ressourcen mit Erlaubnis von sich selbst oder anonym.

Es gibt drei Arten der Authentifizierung, die wir verwenden können: 1) Token-basierte Authentifizierung

Hier geht es darum, während der ersten Verbindung einen Benutzernamen und ein Kennwort anzugeben und das Token zu erhalten, das für nachfolgende Anforderungen verwendet werden soll, bis das Token abläuft.

Hier ist ein Beispiel für die Verwendung der Rest-API über PHP

<?php
$userData = array("username" => "USERNAMe", "password" => "PASSWORD");
$ch = curl_init("http://www.YOUR_DOMIAN.com/rest/V1/integration/admin/token");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($userData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Content-Lenght: " . strlen(json_encode($userData))));

$token = curl_exec($ch);

$ch = curl_init("http://www.YOUR_DOMIAN.com/rest/V1/products/LC515");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Authorization: Bearer " . json_decode($token)));

$result = curl_exec($ch);

var_dump($result);

Hinweis: - Stellen Sie sicher, dass der Benutzername ein Administrator ist, dem die richtigen Ressourcen zugewiesen wurden

OAuth-basierte Authentifizierung

Der Zugriff auf die API ist über OAuth 1.0a ( https://en.wikipedia.org/wiki/OAuth ) zulässig . Stellen Sie sich in diesem Fall die Magento-API als einen Dienst vor, der den Zugriff auf Ressourcen für Dritte über die Genehmigung von Ressourcenbesitzern ermöglicht. Beispiel: Abrufen von Kundeninformationen (Ressourcenbesitzer) von der Magento-API (Dienst) von einer Drittanbieteranwendung (Client). Dies liegt etwas außerhalb des Geltungsbereichs dieses Artikels, und ein separater Artikel ist in Vorbereitung. Es gibt jedoch ein einfaches Beispiel für die Verwendung der Integration ohne "Identity Link URL" und "Callback URL".

Sie müssen lediglich zu System> Integrationen gehen und eine neue Integration ohne "Identity Link URL" und "Callback URL" hinzufügen. Denken Sie daran, den Ressourcenzugriff auf der Registerkarte API zu bearbeiten.

Führen Sie dann dieses Skript aus:

<?php
function sign($method, $url, $data, $consumerSecret, $tokenSecret)
{
    $url = urlEncodeAsZend($url);

    $data = urlEncodeAsZend(http_build_query($data, '', '&'));
    $data = implode('&', [$method, $url, $data]);

    $secret = implode('&', [$consumerSecret, $tokenSecret]);

    return base64_encode(hash_hmac('sha1', $data, $secret, true));
}

function urlEncodeAsZend($value)
{
    $encoded = rawurlencode($value);
    $encoded = str_replace('%7E', '~', $encoded);
    return $encoded;
}

// REPLACE WITH YOUR ACTUAL DATA OBTAINED WHILE CREATING NEW INTEGRATION
$consumerKey = '0b3d76jra3log3i2dthslvf0fg54avjv';
$consumerSecret = 'yk8ypwrqrjepa01g3bt0f57ii6kgkqb4';
$accessToken = 'pjhpgtv3un78h83wmhcbk0s8nuxbfhx0';
$accessTokenSecret = 'ryf7sqesnrsn23aifragqywttbm3gkch';

$method = 'GET';
$url = 'http://www.YOUR_DOMIAN..com/rest/V1/products/LC515';

//
$data = [
    'oauth_consumer_key' => $consumerKey,
    'oauth_nonce' => md5(uniqid(rand(), true)),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_timestamp' => time(),
    'oauth_token' => $accessToken,
    'oauth_version' => '1.0',
];

$data['oauth_signature'] = sign($method, $url, $data, $consumerSecret, $accessTokenSecret);

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $url,
    CURLOPT_HTTPHEADER => [
        'Authorization: OAuth ' . http_build_query($data, '', ',')
    ]
]);

$result = curl_exec($curl);
curl_close($curl);
var_dump($result);

Einige APIs benötigen wir, um searchCriteria zu verwenden. Beispiel: -

GET http://<magento_host>/index.php/rest/V1/products?
searchCriteria[filter_groups][0][filters][0][field]=name&
searchCriteria[filter_groups][0][filters][0][value]=%25Leggings%25&
searchCriteria[filter_groups][0][filters][0][condition_type]=like&
searchCriteria[filter_groups][0][filters][1][field]=name&
searchCriteria[filter_groups][0][filters][1][value]=%25Parachute%25&
searchCriteria[filter_groups][0][filters][1][condition_type]=like

Weitere Informationen finden Sie unter http://devdocs.magento.com/guides/v2.1/howdoi/webapi/search-criteria.html


Bitte besuchen Sie hier, um mein Problem zu sehen: - magento.stackexchange.com/q/260229/49733
Wakar Ahamad

5

im postman unten muss die konfiguration durchgeführt werden Geben Sie hier die Bildbeschreibung ein


In welcher Magento-Version wurde dieser Screenshot erstellt? Ich kann diese Seite nicht finden.
AdamJones

@AdamJones, das ist Postman im Screenshot, nicht das Magento 2-Backend.
DomainSoil

0

Um das bereits gegebene Beispiel zu vervollständigen, aber die get-Parameter in der URL zu verwenden, verwenden Sie: -

$consumerKey = '2f5jp18p92au5bdfjwp686_somemore';
$consumerSecret = 'x1b48mz2pg1do7gi42aqeb1_somemore';
$accessToken = 'o5msvni7j79t79tl09u18x6_somemore';
$accessTokenSecret = 'f9uhqbf4ym6rv4jdxyymt0u_somemore';

function sign($method, $url, $data, $get, $consumerSecret, $tokenSecret){
    $data = array_merge($data,$get);
    ksort($data);
    $url = str_replace('%7E', '~', rawurlencode($url));
    $data = str_replace('%7E', '~', rawurlencode(http_build_query($data, '', '&')));
    $data = implode('&', [$method, $url, $data]);
    $secret = implode('&', [$consumerSecret, $tokenSecret]);
    return base64_encode(hash_hmac('sha1', $data, $secret, true));
}

$method = 'GET';
$url = 'https://your.host/rest/V1/customers/search';
$params =[
    'search_criteria[filter_groups][0][filters][0][field]' => 'firstname',
    'search_criteria[filter_groups][0][filters][0][value]' => '%dallas%',
    'search_criteria[filter_groups][0][filters][0][condition_type]' => 'like',
    'search_criteria[filter_groups][1][filters][0][field]' => 'lastname',
    'search_criteria[filter_groups][1][filters][0][value]' => '%clarke%',
    'search_criteria[filter_groups][1][filters][0][condition_type]' => 'like',
];
//$url = 'https://your.host/rest/V1/products/sku';
//$params = [];
$data = [
    'oauth_consumer_key' => $consumerKey,
    'oauth_nonce' => md5(uniqid(rand(), true)),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_timestamp' => time(),
    'oauth_token' => $accessToken,
    'oauth_version' => '1.0',
];
$data['oauth_signature'] = sign($method, $url, $data, $params, $consumerSecret, $accessTokenSecret);

$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_SSL_VERIFYHOST => 0,
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_URL => $url.'?'.http_build_query($params),
    CURLOPT_HTTPHEADER => [
        'Authorization: Basic '. base64_encode('not:telling'),
        'Authorization: OAuth ' . http_build_query($data, '', ',')
    ]
]);
$result = curl_exec($curl);
curl_close($curl);
var_dump($result);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.