Magento 2 REST API kullanımı örnekleri


Yanıtlar:


13

Magento 2, alıştığımız Magento'nun eski sürümüne benzer şekilde REST (Temsili Durum Transferi) ve SOAP'ı (Basit Nesne Erişim Protokolü) destekler. Resmi belgeler çoğunlukla belirli bir dilde örnekler olmadan ham kıvrılma talebine dayanmaktadır. PHP yaptığımız şeydir ve bunu kullanan birçok kişi de olacaktır, bu yüzden size Magento 2 API'sini nasıl bağlayacağınız ve kullanacağınıza dair gerçek PHP örnekleri vermeye çalıştık.

Magento'da API'ya erişimi olan üç kullanıcı türü vardır ve bunlar:

1) Misafir kullanıcı Anonim izinle kaynaklara erişebilirler.

2) Yönetici / Entegrasyon Konfigürasyon tarafından yetkilendirilen kaynaklara erişimleri vardır.

3) Müşteri Kaynaklara öz veya anonim izni ile erişebilirler.

Kullanabileceğimiz üç tür kimlik doğrulama vardır: 1) Belirteç tabanlı kimlik doğrulama

Burada fikir, ilk bağlantı sırasında kullanıcı adı ve şifre sağlamak ve token sona erene kadar takip eden istekler için kullanılacak jetonu almaktır.

PHP ile rest API kullanarak örnek

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

Not: - kullanıcı adının uygun kullanıcılara sahip yönetici kullanıcı olduğundan emin olun.

OAuth tabanlı kimlik doğrulama

API'ya erişime OAuth 1.0a ( https://en.wikipedia.org/wiki/OAuth ) aracılığıyla izin verilir . Bu durumda, Magento API'sini kaynak sahiplerinden alınan onay ile üçüncü taraflara kaynaklara erişime izin veren bir hizmet olarak düşünün. Örneğin, üçüncü taraf uygulamasından (istemci) Magento API'sinden (hizmet) müşteri (kaynak sahibi) bilgisi alma. Bu, bu makalenin kapsamının biraz dışındadır ve ayrı bir makale hazırlanmaktadır, ancak “Kimlik bağlantısı URL'si” ve “Geri arama URL'si” olmadan entegrasyon kullanımına basit bir örnek vardır.

Yapmanız gereken Sistem> Entegrasyonlara gidip “Kimlik bağlantısı URL'si” ve “Geri Arama URL'si” olmadan yeni entegrasyon eklemek. Kaynak erişimini API sekmesinde düzenlemeyi unutmayın.

Sonra şu komut dosyasını çalıştırın:

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

searchCriteria ex kullanmamız gereken birkaç API: -

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

bkz. http://devdocs.magento.com/guides/v2.1/howdoi/webapi/search-criteria.html



5

postacı altında aşağıdaki yapılandırma yapılmalıdır resim açıklamasını buraya girin


Bu ekran görüntüsü Magento'nun hangi sürümü yapıldı? Bu sayfayı bulamıyorum.
AdamJones

@AdamJones, ekran görüntüsünde Postman, Magento 2 arka ucunda değil.
DomainSoil

0

Zaten verilen örneği tamamlamak, ancak url'deki get parametrelerini kullanmak için şunu kullanın: -

$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);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.