besoin d'appeler Magento2 rest api au niveau du code comment appeler par défaut magento REST APIS
la source
besoin d'appeler Magento2 rest api au niveau du code comment appeler par défaut magento REST APIS
Magento 2 prend en charge REST (Representational State Transfer) et SOAP (Simple Object Access Protocol), un peu comme l'ancienne version de Magento à laquelle nous étions habitués. La documentation officielle est principalement basée sur une demande de boucle brute sans exemples dans une langue spécifique. PHP est ce que nous faisons et il y aura de nombreuses personnes l'utilisant également, nous avons donc essayé de vous donner de vrais exemples PHP de la façon de se connecter et d'utiliser l'API Magento 2.
Il existe trois types d'utilisateurs qui ont accès à l'API dans Magento et ce sont:
1) Utilisateur invité Ils ont accès aux ressources avec une autorisation anonyme.
2) Administrateur / Intégration Ils ont accès à des ressources dont la configuration est autorisée.
3) Client Ils ont accès aux ressources avec leur propre autorisation ou leur autorisation anonyme.
Il existe trois types d'authentification que nous pouvons utiliser: 1) Authentification basée sur des jetons
L'idée ici est de fournir un nom d'utilisateur et un mot de passe lors de la connexion initiale et de recevoir le jeton à utiliser pour les demandes qui suivent, jusqu'à l'expiration du jeton.
Voici un exemple d'utilisation d'API rest via 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);
Remarque: - assurez-vous que le nom d'utilisateur est un utilisateur administrateur avec les ressources appropriées doit être attribué
Authentification basée sur OAuth
L'accès à l'API est autorisé via OAuth 1.0a ( https://en.wikipedia.org/wiki/OAuth ). Dans ce cas, considérez l'API Magento comme un service qui permet l'accès aux ressources à des tiers via l'approbation obtenue des propriétaires des ressources. Par exemple, obtenir des informations sur le client (propriétaire de la ressource) à partir de l'API Magento (service) à partir d'une application tierce (client). Ceci est un peu hors de portée de cet article et un article séparé est en préparation, mais il existe un exemple simple d'utilisation de l'intégration sans «URL de lien d'identité» et «URL de rappel».
Ce que vous devez faire est d'aller dans Système> Intégrations et d'ajouter une nouvelle intégration sans «URL de lien d'identité» et «URL de rappel». N'oubliez pas de modifier l'accès aux ressources sur l'onglet API.
Exécutez ensuite ce script:
<?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);
quelques API dont nous avons besoin pour utiliser searchCriteria ex: -
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
voir http://devdocs.magento.com/guides/v2.1/howdoi/webapi/search-criteria.html
dans l'homme de poste ci-dessous, la configuration doit être effectuée
la source
Pour compléter l'exemple déjà donné, mais utilisez les paramètres get dans l'url, utilisez: -
la source