Créer une API personnalisée dans Magento première partie

introduction

Pour toute plate-forme réussie, il est essentiel de suivre les fonctionnalités de pointe et de leur fournir une compétitivité sur le marché. L'exposition des API pour votre plate-forme est l'une des fonctionnalités importantes qui permet l'intégration avec des systèmes tiers, ouvrant ainsi la porte à une communauté plus large. Magento, l’une des plates-formes de commerce électronique les plus performantes, fournit une multitude de fonctionnalités et d’utilitaires utiles, ce qui prouve qu’il s’agit d’un véritable cadre d’entreprise..

Exposer des API pour vos ressources est bénéfique à bien des égards. L'un des plus évidents est qu'il rend vos ressources disponibles sur différentes plates-formes, ce qui les rend indépendantes d'une plate-forme, grâce à des protocoles tels que XML - RPC / SOAP, ce qui vous permet d'exposer vos ressources de manière rationalisée. Nous utiliserons SOAP pour notre module personnalisé.

Dans ce tutoriel, nous allons créer un module personnalisé "Customapimodule". Je suppose que vous connaissez le processus de création de modules de base dans Magento. Voici un bel article expliquant les bases de la création de modules personnalisés.

Un coup d'œil sur la configuration du fichier

Voici la liste des fichiers requis pour la configuration souhaitée:

  • app / etc / modules / Envato_All.xml: c'est un fichier utilisé pour activer notre module personnalisé.
  • app / code / local / Envato / Customapimodule / etc / config.xml: c'est un fichier de configuration de module.
  • app / code / local / Envato / Customapimodule / etc / api.xml: C'est un fichier qui déclare les API fournies par notre module..
  • app / code / local / Envato / Customapimodule / etc / wsdl.xml: dans ce fichier, nous allons définir les méthodes de l'API conformément aux conventions de WSDL..
  • app / code / local / Envato / Customapimodule / Helper / Data.php: c'est un fichier utilisé par le système de traduction de Magento.
  • app / code / local / Envato / Customapimodule / Model / Product / Api.php: C'est un fichier de modèle qui implémente la logique de nos méthodes API.
  • app / code / local / Envato / Customapimodule / Modèle / Produit / Api / V2.php: Il s'agit d'un fichier prenant en charge l'API v2 de Magento..

Création de module personnalisé: Configuration des fichiers

Pour commencer, nous allons créer un fichier d'activation de module. Créez un fichier "app / etc / modules / Envato_All.xml" et collez le contenu suivant dans ce fichier. Nous avons utilisé "Envato" comme espace de noms de module et "Customapimodule" comme nom de module. Cela activera notre module "Customapimodule" par défaut.

    vrai local   

Ensuite, nous devons créer un fichier de configuration de module. Créez "app / code / local / Envato / Customapimodule / etc / config.xml" et collez le contenu suivant dans ce fichier..

    1,0      Envato_Customapimodule_Model     Envato_Customapimodule_Helper    

Rien d'extraordinaire ici - nous venons de déclarer les classes "Model" et "Helper" conformément aux conventions de Magento.

Pour aller de l'avant, créez "app / code / local / Envato / Customapimodule / etc / api.xml" et collez le contenu suivant dans ce fichier. Le fichier "api.xml" est utilisé pour déclarer les méthodes API exposées par votre module.

     customapimodule / product_api Démo API Custommoduleapi customapimodule / produit   Liste de produits articles      customapimodule_product    customapimoduleProduct      Des produits 5  Données du produit      

Nous allons commencer avec le balise, qui englobe toutes les ressources déclarées par votre module. Vous pourriez penser à "ressource" en tant qu'entité à l'aide de laquelle vous souhaitez classer vos méthodes d'API.. 

Dans notre exemple, nous venons de déclarer une seule ressource nommée . Vous pouvez le nommer comme bon vous semble, à condition qu'il s'agisse d'un identifiant unique. Sous le  balise de ressource, nous avons déclaré la balise pour lier le fichier "Model" de Magento, dans lequel nous définirons les définitions de la méthode API. Les méthodes pour nos ressources sont enveloppées par le  étiquette. Dans notre cas, nous n’avons défini qu’une seule méthode, "items", sous le  tag, qui fournira une liste de produits.

De plus, le  tag sous est utilisé pour fournir un contrôle d'accès à nos ressources. La valeur définie dans le la balise "customapimodule / product" fait référence à la définition au bas du fichier. 

Au bas du fichier, vous pouvez voir que nous avons déclaré un fichier séparé. balise qui définit le "customapimodule / product". En bref, il est utilisé pour placer nos ressources sous contrôle d’accès, de sorte que certains «rôles d’API» puissent y accéder si elles sont définies de cette manière dans le back-end de Magento. Nous en discuterons plus en détail dans la suite de ce tutoriel..

Pour le moment, deux versions de l'API Magento sont prises en charge, v1 et v2, à l'aide desquelles vous pouvez créer et exposer des API. Dans notre exemple, nous verrons les deux méthodes. le La balise est utilisée pour définir un nom d'alias de ressource par lequel notre méthode sera appelée. Nous l'avons défini comme , Ainsi, chaque fois que vous souhaitez appeler une méthode API à l'aide de l'API Magento v1, vous utiliserez "product" comme préfixe de ressource. De la même manière définit un alias de ressource pour l'API Magento v2, le préfixe de ressource sera donc "customapimoduleProduct". Ces choses seront plus claires lorsque nous verrons comment appeler nos API dans le prochain tutoriel..

Ensuite, créons le fichier "app / code / local / Envato / Customapimodule / etc / wsdl.xml" et collez le contenu suivant..

                            Liste de produits                      

Le fichier "wsdl.xml" est utilisé pour définir les définitions de la méthode API selon la syntaxe SOAP. Nous verrons certaines des balises importantes dans ce fichier dans le contexte de ce tutoriel.. 

Premièrement, nous avons défini le type complexe "fieldInfo", qui contient deux éléments: "entity_id" et "name". De plus, nous avons défini le type complexe "fieldInfoArray", dérivé du type complexe "fieldInfo". C'est un tableau du type complexe "fieldInfo". 

En termes simples, nous avons défini les propriétés de l'objet qui seront renvoyées dans la réponse de l'appel de la méthode API. Dans notre cas, nous vous retournerons une gamme de produits. Chaque élément d'un tableau aura deux propriétés: "entity_id" et "name" du produit. Vous pouvez définir plus de propriétés selon vos besoins.

Ensuite, sous le balise "customapimoduleProductListRequest", nous avons défini les paramètres d'entrée requis à l'aide du  étiquette. De la même manière, sous la balise "customapimoduleProductListResponse", nous avons défini le type des objets de sortie. Lorsque nous appelons une méthode API, nous devons passer "sessionId", et la réponse de la méthode API contiendra le tableau de produits. Le reste des balises fera apparaître notre méthode lorsque vous appelez http: // yourmagentostore / api / v2_soap? Wsdl = 1.

Ensuite, nous devrons créer le fichier "app / code / local / Envato / Customapimodule / Helper / Data.php" afin de nous assurer que le système de traduction de Magento fonctionne correctement. C'est presque un fichier vide, mais devrait être là selon les conventions!

Créons ensuite un fichier de modèle "app / code / local / Envato / Customapimodule / Model / Product / Api.php".

getCollection () -> addAttributeToSelect ('*') -> setOrder ('entity_id', 'DESC') -> setPageSize (5); foreach ($ produits en tant que $ produit) $ arr_products [] = $ produit-> toArray (array ('entity_id', 'name'));  return $ arr_products; 

Rappelons que précédemment dans "api.xml" nous avions défini une méthode "items" encapsulée par un étiquette. Donc, dans la classe de modèle ci-dessus, nous venons d'implémenter cette. 

Dans cette méthode, nous récupérons simplement cinq produits récents et parcourons chacun des éléments pour préparer un tableau de produits avec les propriétés "entity_id" et "name". Alors maintenant, vous devriez probablement comprendre la raison du "Type complexe" créé dans "wsdl.xml"!

De plus, nous devons également créer un fichier de modèle pour prendre en charge l'API Magento v2. Créons un fichier modèle "app / code / local / Envato / Customapimodule / Modèle / Produit / Api / v2.php" avec le contenu suivant.

Comme vous pouvez le constater, il s’agit simplement d’extension d’une classe de modèle définie précédemment dans le fichier "app / code / local / Envato / Customapimodule / Model / Product / Api.php"..

Donc, c'est tout ce qui concerne l'installation du fichier pour l'implémentation de l'API personnalisée. Si vous êtes curieux, activez le module à partir du back-end et videz le cache. Maintenant, lorsque vous visitez la page http: // yourmagentostore / api / v2_soap? Wsdl = 1, vous devriez voir que notre méthode "customapimoduleProductList" est répertoriée avec les autres API!

Dans la prochaine partie, nous verrons comment créer un utilisateur et un rôle d'API et, bien sûr, comment utiliser notre méthode d'API personnalisée définie dans ce tutoriel.!