Creați un API personalizat în Magento Partea întâi

Introducere

Pentru orice platformă de succes, este vital să țineți pasul cu caracteristicile de ultimă oră și să le oferiți-le să concureze pe piață. Expunerea API-urilor pentru platforma dvs. este una din caracteristicile importante care permite integrarea cu sistemele terților, deschizând astfel ușile pentru a ajunge la o comunitate mai largă. Magento, fiind una dintre cele mai de succes platforme de e-Commerce, oferă o multitudine de caracteristici și utilități utile, ceea ce dovedește că este un cadru la nivel de întreprindere.

Expunerea API-urilor pentru resursele dvs. este benefică în multe feluri. Una dintre cele mai evidente este faptul că vă pune la dispoziție resursele pe diferite platforme, făcându-le astfel independente de platformă, datorită protocoalelor precum XML - RPC / SOAP, care vă permite să vă expuneți resursele într-o manieră raționalizată. Vom folosi SOAP pentru modulul nostru personalizat.

În acest tutorial, vom crea un modul personalizat "Customapimodule". Presupun că sunteți familiarizat cu procesul de creare a modulului de bază în Magento. Iată un articol frumos care explică elementele de bază ale creării modulului personalizat.

O privire la configurarea fișierelor

Iată lista fișierelor necesare pentru configurarea dorită:

  • app / etc / modules / Envato_All.xml: Este un fișier folosit pentru a permite modulul nostru personalizat.
  • app / code / local / Envato / Customapimodule / etc / config.xml: Este un fișier de configurare a modulului.
  • app / code / local / Envato / Customapimodule / etc / api.xml: Este un fișier care declară API-urile furnizate de modulul nostru.
  • app / code / local / Envato / Customapimodule / etc / wsdl.xml: În acest fișier vom defini metodele API conform convențiilor WSDL.
  • app / code / local / Envato / Customapimodule / Helper / Data.php: Este un fișier folosit de sistemul de traducere Magento.
  • app / code / local / Envato / Customapimodule / Model / Produs / Api.php: Este un fișier model care implementează logica metodelor API.
  • app / code / local / Envato / Customapimodule / Model / Produs / Api / V2.php: Este un fișier pentru a sprijini API-ul Magento v2.

Crearea modulelor personalizate: Configurarea fișierelor

Pentru a începe, vom crea un fișier de activator de module. Creați un fișier "app / etc / modules / Envato_All.xml" și lipiți următorul conținut în acel fișier. Am folosit "Envato" ca spațiu de nume al modulelor noastre și "Customapimodule" ca numele modulului nostru. Acesta va permite modulul "Customapimodule" în mod implicit.

    Adevărat local   

Apoi, trebuie să creați un fișier de configurare a modulului. Creați "app / code / local / Envato / Customapimodule / etc / config.xml" și lipiți următorul conținut în acel fișier.

    1.0      Envato_Customapimodule_Model     Envato_Customapimodule_Helper    

Nimic nu este aici - tocmai am declarat clasele "Model" și "Helper" conform convențiilor Magento.

Înainte de a crea, creați "app / code / local / Envato / Customapimodule / etc / api.xml" și lipiți următorul conținut în acel fișier. Fișierul "api.xml" este folosit pentru a declara metodele API expuse de modulul dvs..

     customapimodule / product_api Demo Custommoduleapi API customapimodule / produs   Lista produselor articole      customapimodule_product    customapimoduleProduct      Produse 5  Date despre produs      

Vom începe cu tag, care împachetează toate resursele declarate de modulul dvs. S-ar putea să vă gândiți la "resursă" ca entitate, pe care doriți să vă clasificați metodele API. 

În exemplul nostru, tocmai am declarat o singură resursă numită . Puteți numi ceea ce vă place, atâta timp cât este un identificator unic. Sub  eticheta de resurse, am declarat tag pentru a conecta fișierul Magento "Model", unde vom defini definițiile metodei API. Metodele pentru resursele noastre sunt împachetate de  etichetă. În cazul nostru, am definit doar o singură metodă, "elemente", în secțiunea "  tag, care va oferi o listă de produse.

Mai mult,  etichetă sub este folosit pentru a asigura controlul accesului pentru resursele noastre. Valoarea definită în tag "customapimodule / product" face trimitere la definiția din partea de jos a fișierului. 

În partea de jos a fișierului, puteți vedea că am declarat separat tag care definește "customapimodule / produs". Pe scurt, este folosit pentru a pune resursele noastre sub controlul accesului, astfel încât să poată fi accesate de anumite "roluri API" dacă sunt definite astfel în back-end-ul Magento. Vom discuta acest lucru mai detaliat în următoarea parte a acestui tutorial.

În prezent, sunt acceptate două variante ale API Magento, v1 și v2, prin care puteți crea și expune API-uri. În exemplul nostru, vom vedea ambele metode. tag-ul este folosit pentru a defini un nume alias de resursă prin care se va apela metoda noastră. Am definit-o ca fiind , astfel încât ori de câte ori doriți să apelați o metodă API utilizând API-ul Magento v1, veți folosi "produsul" ca prefix de resurse. In acelasi fel definește un alias de resurse pentru API-ul Magento v2, astfel încât prefixul resurselor va fi "customapimoduleProduct". Aceste lucruri vor fi mai clare atunci când vom vedea cum să numim API-urile noastre în tutorialul următor.

Apoi, creați fișierul "app / code / local / Envato / Customapimodule / etc / wsdl.xml" și inserați următorul conținut.

                            Lista produselor                      

Fișierul "wsdl.xml" este utilizat pentru a defini definițiile metodei API ca în sintaxa SOAP. Vom vedea unele dintre etichetele importante din acest fișier în contextul acestui tutorial. 

Mai întâi, am definit tipul de complex "fieldInfo", care conține două elemente: "entity_id" și "name". Mai mult, am definit tipul de complex "fieldInfoArray", care este derivat din tipul complex "fieldInfo". Este o matrice de tip complex "fieldInfo". 

În termeni simpli, am definit proprietățile obiectului care vor fi returnate în răspunsul apelului metodei API. În cazul nostru, vom întoarce o serie de produse. Fiecare element dintr-un matrice va avea două proprietăți: "entity_id" și "name" ale produsului. Puteți defini mai multe proprietăți conform cerințelor dvs..

Apoi, sub tag "customapimoduleProductListRequest", am definit parametrii de intrare necesari folosind  etichetă. În același mod, în cadrul tag "customapimoduleProductListResponse", am definit tipul de obiecte de ieșire. Atunci când apelăm o metodă API, trebuie să transmitem "sessionId", iar răspunsul metodei API va conține o serie de produse. Restul etichetelor va face ca metoda să apară atunci când sunați la http: // yourmagentostore / api / v2_soap? Wsdl = 1.

Apoi, va trebui să creați fișierul "app / code / local / Envato / Customapimodule / Helper / Data.php" doar pentru a vă asigura că sistemul de traducere al Magento funcționează corect. Este aproape un dosar gol, dar ar trebui să fie acolo conform convențiilor!

Apoi, să creați un fișier model "app / code / local / Envato / Customapimodule / Model / Product / Api.php".

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

Reamintim că mai devreme în "api.xml" am definit o metodă "elemente" înfășurată de a etichetă. Astfel, în clasa de modele de mai sus, am implementat acest lucru. 

În această metodă, preluăm pur și simplu cinci produse recente și iterăm prin fiecare dintre ele pentru a pregăti o serie de produse cu proprietățile "entity_id" și "name". Deci, acum ar trebui probabil să înțelegeți motivul pentru "Complex Type" creat în "wsdl.xml"!

În plus, trebuie să creați un fișier model pentru a sprijini API-ul Magento v2. Să creăm un fișier model "app / code / local / Envato / Customapimodule / Model / Product / Api / v2.php" cu următorul conținut.

După cum puteți vedea, se extinde doar o clasă de model definită mai devreme în fișierul "app / code / local / Envato / Customapimodule / Model / Product / Api.php".

Deci, este vorba despre configurarea fișierelor pentru implementarea API personalizată. Dacă sunteți curios, activați modulul din back-end și goliți memoria cache. Acum, când vizitați pagina http: // yourmagentostore / api / v2_soap? Wsdl = 1, ar trebui să vedeți metoda noastră "customapimoduleProductList" este listată împreună cu celelalte API-uri!

În următoarea parte, vom continua și vom vedea cum să creăm rolul API pentru utilizatori și API și, bineînțeles, cum să folosim metoda API personalizată definită în acest tutorial!

Cod