Magento 2 API (rest) avec Python3

Je me suis lancé récemment dans Python et je développe une app métier de type ERP destinée à entretenir notre catalogue Magento 2.

La finalité consisterait à ne plus dépendre du back office Magento 2.

Sauf que la littérature sur ne Net concernant les intagrations Magento avec Python est quasi inexistante !

Bizarre alors même que Python est actuellement le langage le plus apprécié des développeurs et que Magento reste une des principaux logiciels E-commerce Open Source.

Enfin ! A force de chercher, j’ai trouvé quelques tips qui commencent à produire leur effets. Je travaille sur M2 V2.4.3 et Python 3.9.9.

N’étant pas développeur de métier, ce qui va suivre risque peut-être de vous interpeler quant à la syntaxe du code, les méthodes utilisées … auquel cas, je suis preneur de toute remarque qui pourrait me faire grandir et m’améliorer.

Connexion à l’API Magento 2

Pour interagir avec les données du site, j’utilise la connexion par TOKEN avec mes Id/Password d’administrateur Magento, tout simplement. Les mêmes qui me servent à me connecter au back-office.

Le token ayant une durée de vie limitée (4 h il me semble pour un admin), il faut avant de pouvoir poster des requêtes se le procurer par une requête préliminaire.

import requests
import json

user = 'admin'
passw = 'mypass123+$'

token_url = f'https://mon.site/rest//all/V1/integration/admin/token?username={user}&password={passw}'
header = {'Content-Type': 'application/json; charset=utf-8'}


get_token = requests.post(token_url, headers=header)
token = (get_token.text).strip('\"')

La réponse de l’API étant entouré de doubles quotes

"8apilosq5u1eo7948qktzfufvfrkx07o"

, je n’ai pas trouvé d’autre moyen de m’en débarrasser avec :

token = (get_token.text).strip('\"')

il y a certainement une façon plus élégante de le faire mais je ne l’ai pas trouvée.

Une fois le token récupéré, on peut lancer une nouvelle requête pour par exemple, récupérer un produit en précisant dans le header de la requête, le token avec la syntaxe suivante :

header = {'Authorization': 'Bearer ' + token}
api_url = 'https://mon.site/rest/V1/products/'
sku = 'test-produit'
endpoint = f'{api_url}{sku}'
r = requests.get(endpoint, headers=header)

r = (r.json())
print(r)  # affichera toutes les données produit
print(r['sku']) # pour isoler le SKU par ex.

Reste à mettre naturellement en forme tout ça avec quelques fonctions et vous disposerez d’une base de code pour initier toutes vos requêtes vers l’API de Magento 2.

Voilà pour l’instant ! Je continue mes recherche et partagerai ce que j’aurais pu trouver.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *