Crea un'API personalizzata in Magento prima parte

introduzione

Per qualsiasi piattaforma di successo, è fondamentale tenere il passo con le funzionalità all'avanguardia e fornirle per competere sul mercato. L'esposizione delle API per la tua piattaforma è una delle caratteristiche importanti che consente l'integrazione con sistemi di terze parti, aprendo così le porte per raggiungere la comunità più ampia. Magento, essendo una delle piattaforme di e-Commerce di maggior successo, offre una miriade di funzioni e utilità utili che lo dimostrano un vero framework di livello enterprise.

L'esposizione delle API per le tue risorse è utile in molti modi. Uno dei più evidenti è che rende disponibili le risorse su piattaforme diverse, rendendole così indipendenti dalla piattaforma, grazie a protocolli come XML - RPC / SOAP, che consente di esporre le risorse in modo semplificato. Useremo SOAP per il nostro modulo personalizzato.

In questo tutorial, creeremo un modulo personalizzato "Customapimodule". Presumo che tu abbia familiarità con il processo di creazione del modulo di base in Magento. Ecco un bell'articolo che spiega le basi della creazione di moduli personalizzati.

Un'occhiata al File Setup

Ecco l'elenco dei file richiesti per la configurazione desiderata:

  • app / etc / modules / Envato_All.xml: è un file utilizzato per abilitare il nostro modulo personalizzato.
  • app / code / local / Envato / Customapimodule / etc / config.xml: è un file di configurazione del modulo.
  • app / code / local / Envato / Customapimodule / etc / api.xml: è un file che dichiara le API fornite dal nostro modulo.
  • app / code / local / Envato / Customapimodule / etc / wsdl.xml: in questo file, definiremo i metodi API secondo le convenzioni di WSDL.
  • app / code / local / Envato / Customapimodule / Helper / Data.php: è un file utilizzato dal sistema di traduzione Magento.
  • app / code / local / Envato / Customapimodule / Model / Product / Api.php: è un file di modello che implementa la logica dei nostri metodi API.
  • app / code / local / Envato / Customapimodule / Model / Product / Api / V2.php: È un file per supportare l'API v2 di Magento.

Creazione di moduli personalizzati: configurazione dei file

Per cominciare, creeremo un file di abilitazione del modulo. Crea un file "app / etc / modules / Envato_All.xml" e incolla i seguenti contenuti in quel file. Abbiamo usato "Envato" come spazio dei nomi del nostro modulo e "Customapimodule" come nome del nostro modulo. Abiliterà il nostro modulo "Customapimodule" per impostazione predefinita.

    vero Locale   

Successivamente, dobbiamo creare un file di configurazione del modulo. Crea "app / code / local / Envato / Customapimodule / etc / config.xml" e incolla i seguenti contenuti in quel file.

    1.0      Envato_Customapimodule_Model     Envato_Customapimodule_Helper    

Niente di eccezionale qui - abbiamo appena dichiarato le classi "Model" e "Helper" secondo le convenzioni di Magento.

Andando avanti, crea "app / code / local / Envato / Customapimodule / etc / api.xml" e incolla i seguenti contenuti in quel file. Il file "api.xml" viene utilizzato per dichiarare i metodi API esposti dal modulo.

     customapimodule / product_api Demo Custommoduleapi API customapimodule / prodotto   Elenco dei prodotti elementi      customapimodule_product    customapimoduleProduct      Prodotti 5  Dati del prodotto      

Inizieremo con il tag, che avvolge tutte le risorse dichiarate dal tuo modulo. Potresti pensare a "risorsa" come entità, utilizzando il quale desideri classificare i tuoi metodi API. 

Nel nostro esempio, abbiamo appena dichiarato una singola risorsa denominata . Puoi nominarlo come preferisci, purché sia ​​un identificatore univoco. Sotto il  tag risorsa, abbiamo dichiarato il tag per collegare il file "Modello" Magento, dove definiremo le definizioni del metodo API. I metodi per le nostre risorse sono inclusi nel  etichetta. Nel nostro caso, abbiamo definito un solo metodo, "items", sotto il  tag, che fornirà un elenco di prodotti.

Inoltre, il  tag sotto è usato per fornire il controllo di accesso per le nostre risorse. Il valore definito nel tag "customapimodule / product" fa riferimento alla definizione nella parte inferiore del file. 

Nella parte inferiore del file, puoi vedere che abbiamo dichiarato separato tag che definisce "customapimodule / product". In breve, è usato per mettere le nostre risorse sotto controllo degli accessi, in modo che possano essere accessibili da alcuni "ruoli API" se sono definiti in questo modo nel back-end di Magento. Ne parleremo più in dettaglio nella prossima parte di questo tutorial.

Al momento, sono supportate due versioni dell'API Magento, v1 e v2, che consentono di creare ed esporre API. Nel nostro esempio, vedremo entrambi i metodi. Il il tag viene utilizzato per definire un nome alias di risorsa con cui verrà chiamato il nostro metodo. L'abbiamo definito come , così ogni volta che vuoi chiamare un metodo API usando l'API di Magento v1, userai "prodotto" come prefisso di risorsa. Nello stesso modo definisce un alias di risorsa per l'API Magento v2, quindi il prefisso della risorsa sarà "customapimoduleProduct". Queste cose saranno più chiare quando vedremo come chiamare le nostre API nel prossimo tutorial.

Successivamente, creiamo il file "app / code / local / Envato / Customapimodule / etc / wsdl.xml" e incolliamo il seguente contenuto.

                            Elenco dei prodotti                      

Il file "wsdl.xml" viene utilizzato per definire le definizioni del metodo API secondo la sintassi SOAP. Vedremo alcuni dei tag importanti in questo file nel contesto di questo tutorial. 

Innanzitutto, abbiamo definito il tipo di complesso "fieldInfo", che contiene due elementi: "entity_id" e "name". Inoltre, abbiamo definito il tipo di complesso "fieldInfoArray", che deriva dal tipo di complesso "fieldInfo". È una matrice del tipo di complesso "fieldInfo". 

In termini semplici, abbiamo definito le proprietà dell'oggetto che verranno restituite nella risposta della chiamata al metodo API. Nel nostro caso, restituiremo una serie di prodotti. Ogni elemento di un array avrà due proprietà: "entity_id" e "name" del prodotto. È possibile definire più proprietà secondo le proprie esigenze.

Successivamente, sotto il tag "customapimoduleProductListRequest", abbiamo definito i parametri di input richiesti usando  etichetta. Allo stesso modo, sotto il tag "customapimoduleProductListResponse", abbiamo definito il tipo di oggetti di output. Quando chiamiamo un metodo API, dobbiamo passare "sessionId" e la risposta del metodo API conterrà l'array di prodotti. Il resto dei tag farà apparire il nostro metodo quando chiami http: // yourmagentostore / api / v2_soap? Wsdl = 1.

Successivamente, dovremo creare il file "app / code / local / Envato / Customapimodule / Helper / Data.php" solo per assicurarci che il sistema di traduzione di Magento funzioni correttamente. È quasi un file vuoto, ma dovrebbe essere lì secondo le convenzioni!

Successivamente, creiamo un file modello "app / code / local / Envato / Customapimodule / Model / Product / Api.php".

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

Ricordiamo che in precedenza in "api.xml" abbiamo definito un metodo "items" incluso da a etichetta. Quindi, nella classe del modello sopra, abbiamo appena implementato questo. 

In questo metodo, prendiamo semplicemente cinque prodotti recenti e iteriamo attraverso ciascuno degli elementi per preparare una serie di prodotti con le proprietà "entity_id" e "name". Quindi ora dovresti probabilmente capire il motivo del "Tipo complesso" creato in "wsdl.xml"!

Inoltre, abbiamo anche bisogno di creare un file modello per supportare l'API di Magento v2. Creiamo un file di modello "app / code / local / Envato / Customapimodule / Model / Product / Api / v2.php" con i seguenti contenuti.

Come puoi vedere, si tratta solo di estendere una classe del modello definita precedentemente nel file "app / code / local / Envato / Customapimodule / Model / Product / Api.php".

Quindi è tutto ciò che riguarda l'installazione del file per l'implementazione dell'API personalizzata. Se sei curioso, abilita il modulo dal back-end e svuota la cache. Ora, quando visiti la pagina http: // yourmagentostore / api / v2_soap? Wsdl = 1, dovresti vedere il nostro metodo "customapimoduleProductList" elencato insieme alle altre API!

Nella parte successiva, proseguiremo e vedremo come creare il ruolo API utente e API e, naturalmente, come utilizzare il nostro metodo API personalizzato definito in questo tutorial!