उदाहरण के साथ Magento 2 REST API का उपयोग


12

मैगेंटो 2 बाकी एपीआई को कोड स्तर पर कॉल करने की आवश्यकता है कि डिफ़ॉल्ट मैगनेटो रेस्ट एपीआईएस को कैसे कॉल किया जाए

जवाबों:


13

Magento 2, REST (प्रतिनिधि राज्य स्थानांतरण) और SOAP (सिंपल ऑब्जेक्ट एक्सेस प्रोटोकॉल) का समर्थन करता है, बहुत कुछ Magento के पुराने संस्करण की तरह जिसका हम उपयोग करते थे। आधिकारिक प्रलेखन ज्यादातर कुछ विशिष्ट भाषा में उदाहरण के बिना कच्चे कर्ल अनुरोध पर आधारित है। PHP यह है कि हम क्या करते हैं और साथ ही साथ इसका उपयोग करने वाले कई लोग होंगे, इसलिए हमने आपको Magento 2 API को जोड़ने और उपयोग करने के वास्तविक PHP उदाहरण देने की कोशिश की।

तीन उपयोगकर्ता प्रकार हैं जिनकी Magento में एपीआई तक पहुँच है और वे हैं:

1) अतिथि उपयोगकर्ता उनके पास अनाम अनुमति वाले संसाधनों तक पहुंच है।

2) प्रशासक / एकीकरण उनके पास संसाधनों तक पहुंच है जिसके लिए कॉन्फ़िगरेशन द्वारा अधिकृत किया गया है।

3) ग्राहक उनके पास स्व या अनाम अनुमति वाले संसाधनों तक पहुंच है।

प्रमाणीकरण के तीन प्रकार हैं जिनका हम उपयोग कर सकते हैं: 1) टोकन-आधारित प्रमाणीकरण

यहां आइडिया प्रारंभिक कनेक्शन के दौरान उपयोगकर्ता नाम और पासवर्ड प्रदान करना है और टोकन प्राप्त करने के लिए उपयोग किए जाने वाले टोकन प्राप्त करना है, जब तक कि टोकन समाप्त नहीं हो जाता।

यहाँ 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);

नोट: - सुनिश्चित करें कि उपयोगकर्ता नाम है उचित संसाधनों के साथ उपयोगकर्ता को सौंपा जाना चाहिए

OAuth- आधारित प्रमाणीकरण

API की पहुंच OAuth 1.0a ( https://en.wikipedia.org/wiki/OAuth ) के माध्यम से अनुमत है । इस मामले में, मैगेंटो एपीआई को एक सेवा के रूप में सोचें जो संसाधन मालिकों से अनुमोदन प्राप्त करने के माध्यम से तीसरे पक्ष तक संसाधनों तक पहुंच की अनुमति देता है। उदाहरण के लिए, तृतीय पक्ष एप्लिकेशन (क्लाइंट) से Magento API (सेवा) से ग्राहक (संसाधन स्वामी) की जानकारी प्राप्त करना। यह इस लेख के दायरे से थोड़ा बाहर है और अलग लेख की तैयारी में है, हालांकि "पहचान लिंक URL" और "कॉलबैक URL" के बिना एकीकरण का उपयोग करने का सरल उदाहरण है।

आपको सिस्टम> इंटीग्रेशन पर जाने और "पहचान लिंक URL" और "कॉलबैक URL" के बिना नए एकीकरण को जोड़ने की आवश्यकता है। एपीआई टैब पर संसाधन पहुंच को संपादित करना याद रखें।

फिर इस स्क्रिप्ट को चलाएं:

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

कुछ एपीआई के लिए हमें खोजक्रांति पूर्व का उपयोग करने की आवश्यकता है: -

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

http://devdocs.magento.com/guides/v2.1/howdoi/webapi/search-cbitervi.html देखें


मेरी समस्या को देखने के लिए कृपया यहाँ जाएँ: - magento.stackexchange.com/q/260229/49733
wakar Ahamad

5

पोस्ट मैन इन कॉन्फ़िगरेशन नीचे किया जाना चाहिए यहाँ छवि विवरण दर्ज करें


इस स्क्रीनशॉट को किस संस्करण में बनाया गया था? मैं इस पृष्ठ का पता नहीं लगा सकता।
एडमजोन

@AdamJones कि स्क्रीनशॉट में डाकिया है, मैगनेटो 2 बैकेंड नहीं।
डोमेनसोइल

0

पहले से दिए गए उदाहरण को पूरा करने के लिए, लेकिन url में पैरामीटर प्राप्त करें, का उपयोग करें: -

$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);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.