Maak een aangepaste API in Magento deel twee

In deze serie bespreken we aangepaste API's in Magento. 

In het eerste deel hebben we een volwaardige aangepaste module gemaakt om de aangepaste API te implementeren, waarin we de vereiste bestanden hebben gemaakt om de aangepaste API's aan te sluiten die door onze module worden geboden. 

In dit tweede en laatste deel gaan we door het back-endgedeelte om te laten zien hoe de API's kunnen worden geconsumeerd.

Snelle samenvatting

Laten we het eerste deel snel samenvatten. Dit is de lijst met bestanden die we al hebben gemaakt:

  • 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 conventie 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 implementeert voor onze API-methoden.
  • app / code / local / Envato / Customapimodule / Model / Product / Api / V2.php: het is een bestand om Magento's v2 API te ondersteunen.

Als u onze aangepaste module al hebt ingeschakeld, ziet u dat onze API-methode "customapimoduleProductList" samen met de andere API's wordt vermeld wanneer u de pagina http: // yourmagentostore / api / v2_soap? Wsdl = 1 bezoekt, die alle beschikbare API's in Magento.

Magento ondersteunt "API-rollen" en "API-gebruikers". We hebben 'API-rollen' nodig omdat u de gebruiker geen toegang wilt geven tot elke API van Magento. De "API-rollen" worden gebruikt om rollen te maken met beperkte toegangsmachtigingen voor de API-bronnen. 

U kunt bijvoorbeeld een rol maken die alleen alleen-lezentoegang tot de API's met productvermeldingen toestaat. Aan de andere kant zou je een rol kunnen maken die het aanpassen van de catalogus mogelijk maakt, en deze zal alleen worden toegewezen aan de "geautoriseerde" gebruikers!

"API-gebruiker" en "API-functie" instellen vanaf de back-end

In deze sectie maken we een demo "API Role" en "API User". Later gebruiken we deze om de aangepaste API's te gebruiken die door onze module worden geleverd. Ga naar de back-end van Magento!

Een API-rol instellen

Ga naar Systeem> Web Services> (SOAP / XML-RPC) Rollen. Klik op Voeg nieuwe rol toe om een ​​nieuwe rol te creëren. Onder de Rol Info tab, ik ben ingeschreven "Demo SOAP-functie" in de Rol naam veld-.

Vervolgens, onder de Rollenbronnen tabblad, ziet u de verschillende bronnen met selectievakjes. Klik op de Producten> Productgegevens check-box. Dit betekent dat "Demo SOAP-functie" alleen toegang heeft tot de resource-API's voor "Productgegevens". Klik op de Bewaar de rol knop om de rolinformatie op te slaan.

Een API-gebruiker instellen

Laten we nu de API-gebruiker maken en de "Demo SOAP-functie" aan die gebruiker toewijzen. Ga naar Systeem> Web Services> (SOAP / XML-RPC) Gebruikers. Klik op Voeg een nieuwe gebruiker toe om een ​​nieuwe gebruiker te maken. Onder de gebruikers informatie tab, vul dan de vereiste informatie in.

Verder, onder de Gebruikersrol tab selecteer de Demo SOAP-rol Radio knop. Klik op de Bewaar gebruiker knop om de gebruikersinformatie op te slaan.

Dus dat is het - we hebben de vereiste rol en gebruiker ingesteld om toegang te krijgen tot de Magento API's!

Hoe de Magento API te consumeren

In deze sectie zullen we zien hoe de Magento API's moeten worden aangeroepen. Maak onder uw documentroot een voorbeeld PHP-bestand en vul het met de volgende inhoud.

login ('soapuser', 'soapuser'); $ result = $ client -> customapimoduleProductList ($ session); $ Client -> endSession ($ sessie); echo '
'; print_r ($ result); // v1 call $ client = new SoapClient ('http://www.yourmagentostore.com/api/soap/?wsdl=1'); $ session = $ client -> login ('soapuser', 'soapuser'); $ result = $ client -> call ($ session, 'product.list', array (array ())); $ Client -> endSession ($ sessie); echo '
'; print_r ($ result);

Wijzig 'http://www.yourmagentostore.com' in uw Magento-winkel-URL. Zoals ik eerder al zei, ondersteunt Magento twee versies van de API's, v1 en v2. In dit voorbeeld heb ik beide manieren gedemonstreerd.

In v2 API-modus maken we eerst een nieuw exemplaar van de klasse "SoapClient". Vervolgens noemen we de "login" -methode om in te loggen bij de Magento-winkel - natuurlijk moeten we de gebruikersnaam en het wachtwoord van de "API-gebruiker" die in het vorige gedeelte is gemaakt, opgeven. Ten slotte noemen we de "customapimoduleProductList" -methode om de lijst met producten op te halen! De $ sessie variabele wordt doorgegeven als een invoerparameter voor de methode om de authenticiteit van de methode te claimen. Een belangrijk ding om op te merken is dat "customapimoduleProduct" het bronvoorvoegsel is en "lijst" de methode naam.

In v1 API-modus, is het enige andere onderdeel het aanroepen van de API-methode. We gebruiken een generieke "call" -methode, waarbij een "methode-naam" en andere parameters als argumenten worden doorgegeven. Zoals u kunt zien, wordt het "product" gebruikt als een bronprefix en is "lijst" de methode-naam!

Conclusie

Dus dat vat de reeks samen! Nu moet u vertrouwd zijn met de Magento API's en u kunt aangepaste API's maken volgens uw vereisten! Voel je vrij om je suggesties en feedback te schieten!