Opprett en tilpasset API i Magento del to

I denne serien diskuterer vi tilpassede APIer i Magento. 

I første del opprettet vi en fullverdig tilpasset modul for å implementere den egendefinerte API, der vi opprettet de nødvendige filene for å koble til de egendefinerte APIene som tilbys av modulen vår. 

I denne andre og siste delen går vi gjennom bakenden, for å demonstrere hvordan du bruker APIene.

Quick Recap

La oss få en rask omtale av første del. Her er listen over filer vi allerede har opprettet:

  • app / etc / modules / Envato_All.xml: Det er en fil som brukes til å aktivere vår egendefinerte modul.
  • app / code / local / Envato / Customapimodule / etc / config.xml: Det er en modulkonfigurasjonsfil.
  • app / code / local / Envato / Customapimodule / etc / api.xml: Det er en fil som erklærer APIene som tilbys av modulen vår.
  • app / code / local / Envato / Customapimodule / etc / wsdl.xml: I denne filen definerer vi API-metodene i henhold til WSDL-konvensjonen.
  • app / code / local / Envato / Customapimodule / Helper / Data.php: Det er en fil som brukes av Magento oversettelsessystemet.
  • app / code / local / Envato / Customapimodule / Modell / Produkt / Api.php: Det er en modellfil som implementerer logikken for API-metodene våre.
  • app / code / local / Envato / Customapimodule / Modell / Produkt / Api / V2.php: Det er en fil for å støtte Magento's v2 API.

Hvis du allerede har aktivert vår egendefinerte modul, bør du også se at API-metoden "customapimoduleProductList" er oppført sammen med de andre APIene når du besøker http: // yourmagentostore / api / v2_soap? Wsdl = 1-siden som viser alle tilgjengelige APIer i Magento.

Magento støtter "API Roller" og "API Brukere". Vi trenger "API Roller" siden du ikke vil tillate brukeren tilgang til hver Magento-API. "API Roller" brukes til å lage roller med begrensede tilgangstillatelser til API-ressursene. 

For eksempel kan du opprette en rolle som bare tillater skrivebeskyttet tilgang til API-produktene for produktoppføring. På den annen side kan du opprette en rolle som tillater katalogendring, og den vil bare bli tildelt kun «autoriserte» brukere!

Oppsett "API Bruker" og "API Rolle" Fra Back-End

I denne delen lager vi en demo "API-rolle" og "API-bruker". Senere bruker vi disse til å konsumere de egendefinerte APIene som tilbys av modulen vår. Gå over til Magento back-end!

Konfigurer en API-rolle

Gå til System> Web Services> (SOAP / XML-RPC) Roller. Klikk på Legg til ny rolle å skape en ny rolle. Under Rolleinfo fanen jeg har skrevet inn "Demo SOAP Rolle" i Rolle navn felt.

Deretter under Rollressurser fanen, ser du de ulike ressursene i avmerkingsbokser. Klikk på Produkter> Produktdata check-box. Det betyr at "Demo SOAP Rolle" bare kan få tilgang til "Produktdata" ressurs APIer. Klikk på Lagre rolle knappen for å lagre rolleinformasjonen.

Sett opp en API-bruker

La oss nå opprette API-brukeren og tilordne "Demo SOAP-rollen" til den brukeren. Gå til System> Web Services> (SOAP / XML-RPC) Brukere. Klikk på Legg til ny bruker å opprette en ny bruker. Under brukerinformasjon fan, vennligst fyll ut den nødvendige informasjonen.

Videre, under Bruker rolle tab velger du Demo SOAP Rolle radioknapp. Klikk på Lagre bruker knappen for å lagre brukerinformasjonen.

Så det er det - vi har satt opp den nødvendige rollen og brukeren for å få tilgang til Magento-APIene!

Slik bruker du Magento API

I denne delen ser vi hvordan du kan ringe Magento-APIene. Opprett et eksempel på PHP-fil under dokumentrotten, og fyll den med følgende innhold.

logg inn ('soapuser', 'soapuser'); $ result = $ client -> customapimoduleProductList ($ økt); $ Klient -> endSession ($ session); ekko '
'; print_r ($ resultat); // v1 call $ client = ny SoapClient ('http://www.yourmagentostore.com/api/soap/?wsdl=1'); $ session = $ klient -> logg inn ('soapuser', 'soapuser'); $ result = $ client -> call ($ session, 'product.list', array (array ())); $ Klient -> endSession ($ session); ekko '
'; print_r ($ resultat);

Endre "http://www.yourmagentostore.com" til Magento-butikkadressen din. Som nevnt tidligere støtter Magento to versjoner av APIene, v1 og v2. I dette eksemplet har jeg vist begge måtene.

I v2 API-modus, oppretter vi først en ny forekomst av klassen "SoapClient". Deretter kaller vi innloggingsmetoden for å logge inn på Magento-butikken. Vi må selvfølgelig gi brukernavnet og passordet til "API-brukeren" som ble opprettet i den tidligere delen. Til slutt, vi kaller "customapimoduleProductList" metoden for å hente listen over produkter! De $ session variabel blir sendt som en inngangsparameter til metoden for å kreve ektheten av metoden. En viktig ting å merke seg her er at "customapimoduleProduct" er ressursprefikset og "liste" er metodenavnet.

I v1 API-modus er den eneste andre delen kallingen av API-metoden. Vi bruker en generisk "call" -metode, der et "metodenavn" og andre parametere blir sendt som argumenter. Som du kan se, brukes "produktet" som et ressursprefik og "liste" er metodenavnet!

Konklusjon

Så det oppsummerer serien! Nå bør du føle deg komfortabel med Magento API, og du kan opprette egendefinerte APIer etter dine krav! Ta gjerne dine forslag og tilbakemeldinger!