Maak een aangepaste API in Magento deel een

Invoering

Voor elk succesvol platform is het van vitaal belang om de meest geavanceerde functies bij te houden en ze te laten concurreren op de markt. Het blootstellen van API's voor uw platform is een van de belangrijke functies die integratie met systemen van derden mogelijk maakt, waardoor de deuren worden geopend om de grotere gemeenschap te bereiken. Magento, dat een van de meest succesvolle e-commerceplatforms is, biedt een overvloed aan handige functies en hulpprogramma's die bewijst dat het een echt raamwerk op bedrijfsniveau is.

Het blootstellen van API's voor uw bronnen is op veel manieren nuttig. Een van de meest voor de hand liggende is dat uw bronnen beschikbaar worden gemaakt op verschillende platforms, waardoor ze platformonafhankelijk worden, dankzij protocollen zoals XML - RPC / SOAP, waarmee u uw bronnen op een gestroomlijnde manier kunt ontmaskeren. We zullen SOAP gebruiken voor onze aangepaste module.

In deze zelfstudie maken we een aangepaste module "Customapimodule". Ik neem aan dat je bekend bent met het maken van basismodules in Magento. Hier is een leuk artikel over de basisprincipes van het maken van aangepaste modules.

Een blik op de bestandsinstellingen

Hier is de lijst met bestanden die nodig zijn voor de gewenste setup:

  • app / etc / modules / Envato_All.xml: het is een bestand dat wordt gebruikt om onze aangepaste module in te schakelen.
  • app / code / local / Envato / Customapimodule / etc / config.xml: het is een moduleconfiguratiebestand.
  • app / code / local / Envato / Customapimodule / etc / api.xml: het is een bestand dat de door onze module verstrekte API's declareert.
  • app / code / local / Envato / Customapimodule / etc / wsdl.xml: in dit bestand definiëren we de API-methoden volgens de conventies van WSDL.
  • app / code / local / Envato / Customapimodule / Helper / Data.php: het is een bestand dat wordt gebruikt door het Magento-vertaalsysteem.
  • app / code / local / Envato / Customapimodule / Model / Product / Api.php: het is een modelbestand dat de logica van onze API-methoden implementeert.
  • app / code / local / Envato / Customapimodule / Model / Product / Api / V2.php: het is een bestand om Magento's v2 API te ondersteunen.

Creëren van aangepaste modules: instellen van de bestanden

Om te beginnen maken we een module-enabler-bestand. Maak een bestand "app / etc / modules / Envato_All.xml" en plak de volgende inhoud in dat bestand. We hebben "Envato" gebruikt als onze modulenaam en "Customapimodule" als onze modulenaam. Hiermee wordt onze module "Customapimodule" standaard ingeschakeld.

    waar lokaal   

Vervolgens moeten we een moduleconfiguratiebestand maken. Maak "app / code / local / Envato / Customapimodule / etc / config.xml" en plak de volgende inhoud in dat bestand.

    1.0      Envato_Customapimodule_Model     Envato_Customapimodule_Helper    

Niets bijzonders hier - we hebben zojuist de klassen "Model" en "Helper" volgens de Magento-conventies verklaard.

Ga verder met het maken van "app / code / local / Envato / Customapimodule / etc / api.xml" en plak de volgende inhoud in dat bestand. Het bestand "api.xml" wordt gebruikt om de API-methoden aan te geven die door uw module worden weergegeven.

     customapimodule / product_api Demo Custommoduleapi API customapimodule / product   Lijst met producten items      customapimodule_product    customapimoduleProduct      producten 5  Productgegevens      

We beginnen met de tag, die alle bronnen bevat die door uw module zijn gedeclareerd. U zou "resource" kunnen zien als een entiteit, waarmee u uw API-methoden zou willen categoriseren. 

In ons voorbeeld hebben we zojuist een enkele resource genoemd . Je kunt het noemen wat je wilt, als het maar een unieke identifier is. Onder de  resource tag, we hebben de tag om het Magento "Model" -bestand te koppelen, waar we de API-methodedefinities definiëren. De methoden voor onze bronnen zijn ingepakt door de  label. In ons geval hebben we slechts één enkele methode, 'items', gedefinieerd onder de  tag, die een lijst met producten zal bevatten.

Verder, de  tag onder wordt gebruikt om toegangscontrole te bieden voor onze bronnen. De waarde gedefinieerd in de tag "customapimodule / product" verwijst naar de definitie onderaan het bestand. 

Onderaan het bestand kunt u zien dat we een afzonderlijke hebben opgegeven tag die de "customapimodule / product" definieert. Kort gezegd, het wordt gebruikt om onze bronnen onder toegangscontrole te plaatsen, zodat ze kunnen worden benaderd door bepaalde "API Rollen" als ze op die manier zijn gedefinieerd in de Magento back-end. We zullen dit in meer detail bespreken in het volgende deel van deze tutorial.

Op dit moment worden twee versies van de Magento API ondersteund, v1 en v2, waarmee u API's kunt maken en ontmaskeren. In ons voorbeeld zien we beide methoden. De tag wordt gebruikt om een ​​resource alias naam te definiëren waarmee onze methode zal worden aangeroepen. We hebben het gedefinieerd als , dus wanneer u een API-methode wilt aanroepen met Magento v1 API, gebruikt u "product" als een bronprefix. Op dezelfde manier definieert een resource alias voor de Magento v2 API, dus het resourcevoorvoegsel is "customapimoduleProduct". Deze dingen worden duidelijker als we onze API's in de volgende zelfstudie zien aanroepen.

Laten we vervolgens het bestand "app / code / local / Envato / Customapimodule / etc / wsdl.xml" maken en de volgende inhoud plakken.

                            Lijst met producten                      

Het bestand "wsdl.xml" wordt gebruikt om de definities van de API-methode te definiëren volgens de SOAP-syntaxis. We zullen enkele van de belangrijke tags in dit bestand zien in de context van deze tutorial. 

Ten eerste hebben we het complextype "fieldInfo" gedefinieerd, dat twee elementen bevat: "entity_id" en "name". Verder hebben we het complextype "fieldInfoArray" gedefinieerd, dat is afgeleid van het complextype "fieldInfo". Het is een array van het "fieldInfo" -complextype. 

In eenvoudige bewoordingen hebben we de objecteigenschappen gedefinieerd die worden geretourneerd in het antwoord van de aanroep naar de API-methode. In ons geval zullen we een reeks producten retourneren. Elk item van een array heeft twee eigenschappen: "entity_id" en "name" van het product. U kunt meer eigenschappen definiëren volgens uw vereisten.

Vervolgens, onder de tag "customapimoduleProductListRequest", hebben we de invoerparameters gedefinieerd die vereist zijn met de  label. Op dezelfde manier, onder de tag "customapimoduleProductListResponse", hebben we het type uitvoerobjecten gedefinieerd. Wanneer we een API-methode aanroepen, moeten we 'sessionId' doorgeven en de reactie van de API-methode bevat de reeks producten. De rest van de tags zorgen ervoor dat onze methode wordt weergegeven wanneer u http: // yourmagentostore / api / v2_soap? Wsdl = 1 belt.

Vervolgens moeten we het bestand "app / code / local / Envato / Customapimodule / Helper / Data.php" maken om er zeker van te zijn dat het vertaalsysteem van Magento naar behoren werkt. Het is bijna een leeg bestand, maar zou er volgens de conventies moeten zijn!

Laten we vervolgens een modelbestand maken "app / code / local / Envato / Customapimodule / Model / Product / Api.php".

getCollection () -> addAttributeToSelect ('*') -> setOrder ('entity_id', 'DESC') -> setPageSize (5); foreach ($ producten als $ product) $ arr_products [] = $ product-> toArray (array ('entity_id', 'name'));  return $ arr_products; 

Bedenk dat we eerder in de "api.xml" een "items" -methode definieerden, ingepakt met een label. Dus in de bovenstaande modelklasse hebben we dit zojuist geïmplementeerd. 

In deze methode halen we eenvoudig vijf recente producten op en herhalen we elk van de items om een ​​reeks producten voor te bereiden met de eigenschappen "entity_id" en "name". Dus nu zou je waarschijnlijk de reden moeten begrijpen voor het "Complex Type" gemaakt in "wsdl.xml"!

Verder moeten we ook een modelbestand maken om de Magento v2 API te ondersteunen. Laten we een modelbestand maken "app / code / local / Envato / Customapimodule / Model / Product / Api / v2.php" met de volgende inhoud.

Zoals je ziet, breidt het alleen een modelklasse uit die eerder in het bestand "app / code / local / Envato / Customapimodule / Model / Product / Api.php" is gedefinieerd.

Dus dat is het voor zover het gaat om de configuratie van de aangepaste API-implementatie. Als je nieuwsgierig bent, schakel dan de module vanaf de back-end in en wis de cache. Als u nu de pagina http: // yourmagentostore / api / v2_soap? Wsdl = 1 bezoekt, ziet u dat onze methode 'customapimoduleProductList' wordt weergegeven, samen met de andere API's.!

In het volgende deel bekijken we hoe we de API-gebruikers- en API-rol kunnen maken en natuurlijk hoe we onze aangepaste API-methode kunnen gebruiken die in deze zelfstudie is gedefinieerd!