Opprett en egendefinert API i Magento Del ett

Introduksjon

For enhver vellykket plattform er det viktig å holde tritt med de nyeste funksjonene og gi dem muligheten til å konkurrere i markedet. Eksponering av APIer for plattformen er en av de viktige funksjonene som muliggjør integrasjon med tredjepartssystemer, og derved åpner dørene for å nå det større samfunnet. Magento, som er en av de mest vellykkede e-handelsplattformene, gir en mengde nyttige funksjoner og verktøy som viser at det er et virkelig bedriftsnivå.

Eksponering av APIer for ressursene dine er gunstig på mange måter. En av de mest synlige er at det gjør at ressursene dine er tilgjengelige på forskjellige plattformer, og dermed gjør dem plattformuavhengige, takket være protokoller som XML - RPC / SOAP, som lar deg eksponere ressursene dine på en strømlinjet måte. Vi bruker SOAP for vår tilpassede modul.

I denne opplæringen lager vi en egendefinert modul "Customapimodule". Jeg antar at du er kjent med grunnleggende modulopprettingsprosessen i Magento. Her er en fin artikkel som forklarer grunnleggende om tilpasset modulopprettelse.

Et blikk på filoppsettet

Her er listen over filer som kreves for ønsket oppsett:

  • 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-konvensjonene.
  • 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 til 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.

Tilpasset moduloppretting: Sette opp filene

Til å begynne med vil vi opprette en modul-enabler-fil. Opprett en fil "app / etc / modules / Envato_All.xml" og lim inn følgende innhold i den filen. Vi har brukt "Envato" som vår modulnavn og "Customapimodule" som vårt modulnavn. Det aktiverer vår "Customapimodule" -modul som standard.

    ekte lokal   

Deretter må vi opprette en modulkonfigurasjonsfil. Opprett "app / code / local / Envato / Customapimodule / etc / config.xml" og lim inn følgende innhold i den filen.

    1.0      Envato_Customapimodule_Model     Envato_Customapimodule_Helper    

Ikke noe fancy her - vi har nettopp forklart "Modell" og "Hjelper" -klassen i henhold til Magento-konvensjonene.

Fortsett, lag "app / code / local / Envato / Customapimodule / etc / api.xml" og lim inn følgende innhold i den filen. Filen "api.xml" brukes til å erklære API-metodene som er eksponert av modulen din.

     customapimodule / product_api Demo Custommoduleapi API customapimodule / produkt   Liste over produkter elementer      customapimodule_product    customapimoduleProduct      Produkter 5  Produktdata      

Vi starter med tag, som bryter inn alle ressursene deklarert av modulen din. Du kan tenke på "ressurs" som en enhet, med hvilken du vil kategorisere API-metodene dine. 

I vårt eksempel har vi nettopp erklært en enkelt ressurs som heter . Du kan navngi det uansett, så lenge det er en unik identifikator. Under  ressursetikett, har vi erklært tag for å koble Magento "Model" -filen, der vi definerer definisjonene for API-metoden. Metodene for våre ressurser er innpakket av  stikkord. I vårt tilfelle har vi bare definert en enkelt metode, "elementer", under  tag, som vil gi en liste over produkter.

Videre,  tag under brukes til å gi tilgangskontroll for ressursene våre. Verdien som er definert i tag "customapimodule / product" refererer til definisjonen nederst i filen. 

På bunnen av filen kan du se at vi har erklært en egen tag som definerer "customapimodule / product". Kort sagt, det er vant til å sette ressursene under tilgangskontroll, slik at de kan nås av visse "API Roller" hvis de er definert på den måten i Magento back-end. Vi vil diskutere dette mer detaljert i neste del av denne opplæringen.

For øyeblikket er to versjoner av Magento API støttet, v1 og v2, ved hjelp av som du kan opprette og avsløre APIer. I vårt eksempel ser vi begge metodene. De tag brukes til å definere et ressursaliasnavn som vår metode blir kalt. Vi har definert det som , så når du vil ringe en API-metode ved hjelp av Magento v1 API, vil du bruke "produkt" som et ressursprefiks. På samme måten definerer et ressursalias for Magento v2 API, så ressursprefikset vil være "customapimoduleProduct". Disse tingene vil bli tydeligere når vi ser hvordan du kan ringe våre APIer i neste opplæring.

Deretter la vi opprette filen "app / code / local / Envato / Customapimodule / etc / wsdl.xml" og lim inn følgende innhold.

                            Liste over produkter                      

Filen "wsdl.xml" brukes til å definere API-metoden definisjonene i henhold til SOAP-syntaksen. Vi ser noen av de viktige kodene i denne filen i sammenheng med denne opplæringen. 

Først har vi definert "fieldInfo" kompleks type, som inneholder to elementer: "entity_id" og "name". Videre har vi definert "fieldInfoArray" kompleks type, som er avledet fra "fieldInfo" kompleks type. Det er et utvalg av "fieldInfo" kompleks type. 

Enkelt sagt har vi definert objektegenskapene som vil bli returnert i svaret til API-metoden samtale. I vårt tilfelle returnerer vi en rekke produkter. Hvert element i en matrise vil ha to egenskaper: "entity_id" og "name" av produktet. Du kan definere flere egenskaper i henhold til dine krav.

Deretter under tag "customapimoduleProductListRequest", har vi definert inngangsparametrene som kreves ved hjelp av  stikkord. På samme måte, under tag "customapimoduleProductListResponse", har vi definert typen av utgangsobjektene. Når vi kaller en API-metode, må vi passere "sessionId", og svaret fra API-metoden vil inneholde en rekke produkter. Resten av kodene vil gjøre at metoden vises når du ringer til http: // yourmagentostore / api / v2_soap? Wsdl = 1.

Deretter må vi opprette filen "app / kode / lokal / Envato / Customapimodule / Helper / Data.php" for å sikre at oversettelsessystemet til Magento fungerer riktig. Det er nesten en tom fil, men skal være der i henhold til konvensjonene!

Deretter la vi lage en modellfil "app / code / local / Envato / Customapimodule / Model / Product / Api.php".

getCollection () -> addAttributeToSelect ('*') -> setOrder ('entity_id', 'DESC') -> setPageSize (5); foreach ($ produkter som $ produkt) $ arr_products [] = $ product-> toArray (array ('entity_id', 'name'));  returner $ arr_products; 

Husk det tidligere i "api.xml" vi definerte en "elementer" -metode innpakket av a stikkord. Så i modellen ovenfor har vi nettopp implementert dette. 

I denne metoden henter vi bare fem siste produkter, og itererer gjennom hvert av elementene for å forberede en rekke produkter med egenskapene "entity_id" og "name". Så nå bør du nok forstå grunnen til "Complex Type" opprettet i "wsdl.xml"!

Videre må vi også lage en modellfil for å støtte Magento v2 API. La oss lage en modellfil "app / code / local / Envato / Customapimodule / Model / Product / Api / v2.php" med følgende innhold.

Som du kan se, utvider den bare en modellklasse definert tidligere i filen "app / code / local / Envato / Customapimodule / Model / Product / Api.php".

Så det er det så langt som filoppsettet er opptatt av den tilpassede API-implementeringen. Hvis du er nysgjerrig, aktiver modulen fra baksiden og fjern cachen. Nå, når du besøker http: // dinmagentostore / api / v2_soap? Wsdl = 1 siden, bør du se vår metode "customapimoduleProductList" er oppført sammen med de andre APIer!

I neste del går vi videre og ser hvordan du oppretter API-bruker- og API-rolle, og selvfølgelig, hvordan du bruker vår egendefinerte API-metode som er definert i denne opplæringen!