Crea un'API personalizzata in OpenCart

Avrai bisogno di creare API personalizzate per requisiti unici nello sviluppo del tuo progetto, ad un certo punto nel tempo, ed è ciò che copriremo nel corso di questo tutorial. Nel nostro modulo API personalizzato, recupereremo l'elenco di tutti i prodotti disponibili nello store e sarà un output codificato JSON come richiesto dagli standard REST in OpenCart.

Presumo che tu abbia familiarità con il processo di sviluppo del modulo di base in OpenCart. Ecco un bell'articolo che offre una visione completa dell'argomento nel caso in cui tu voglia saltarci sopra. Un altro punto importante: sto usando l'ultima versione di OpenCart, ovvero 2.1.0.2 mentre scrivo questo, e dovresti farlo anche per garantire la compatibilità delle API di base.

Senza sprecare gran parte del tuo tempo, andrò subito a immergermi nelle cose pratiche, e questo è ciò che riguarda la prossima sezione.

Un'occhiata al File Setup

Diamo un'occhiata all'elenco dei file richiesti per la configurazione desiderata.

  • Catalogo / regolatore / api / custom.php: È un file controller e la maggior parte della nostra logica applicativa risiede in questo file.
  • Catalogo / lingua / it-IT / api / custom.php: È un file di linguaggio che contiene variabili linguistiche.
  • common.php: Questo file contiene il codice comune per scopi di riusabilità.
  • login.php: È un file che dimostra come accedere allo store utilizzando l'API REST.
  • products.php: È un file che dimostra come recuperare i prodotti utilizzando il nostro modulo API personalizzato.

Quindi, è tutto ciò che serve per configurare il nostro modulo API personalizzato e testarlo utilizzando la libreria PHP CURL.

Inizieremo con il file del controller, procediamo e creiamo un file Catalogo / regolatore / api / custom.php con i seguenti contenuti.

load-> lingua ( 'API / custom'); $ json = array (); if (! isset ($ this-> session-> data ['api_id'])) $ json ['error'] ['warning'] = $ this-> language-> get ('error_permission');  else // carica il modello $ this-> load-> model ('catalog / product'); // ottiene prodotti $ prodotti = $ this-> model_catalog_product-> getProducts (); $ json ['success'] ['products'] = $ prodotti;  if (isset ($ this-> request-> server ['HTTP_ORIGIN'])) $ this-> response-> addHeader ('Access-Control-Allow-Origin:'. $ this-> request-> server [ 'HTTP_ORIGIN']); $ this-> response-> addHeader ('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS'); $ this-> response-> addHeader ('Access-Control-Max-Age: 1000'); $ this-> response-> addHeader ('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');  $ this-> response-> addHeader ('Content-Type: application / json'); $ This-> response-> SetOutput (json_encode ($ JSON)); 

Probabilmente, dovrebbe essere abbastanza familiare se si è a conoscenza della struttura dei file del modulo OpenCart. Tuttavia, discuteremo i frammenti importanti dal prodotti metodo.

Prima di tutto, dobbiamo verificare l'autenticità della richiesta, ed è controllato dall'esistenza del api_id variabile nella sessione attiva. Nel caso di una richiesta valida e autenticata, andremo avanti e recupereremo tutti i prodotti usando il getProducts metodo del nucleo Prodotto modello. Ovviamente, darà un messaggio di errore di autorizzazione negato in caso di accesso non valido.

Successivamente, è disponibile un controllo di sicurezza generico per la protezione dagli attacchi CSRF. È compiuto controllando l'esistenza del HTTP_ORIGIN variabile e aggiungendo intestazioni appropriate se esiste.

Finalmente, abbiamo usato il json_encode funzione per codificare il $ prodotti array, e il risultato è passato come argomento del SetOutput metodo.

Successivamente, procederemo e creeremo un file di lingua per il nostro modulo all'indirizzo Catalogo / lingua / it-IT / api / custom.php con i seguenti contenuti.

Quindi, è tutto ciò che riguarda l'installazione di file relativi a OpenCart. Dalla prossima sezione in poi, creeremo i file che ci aiutano a testare la nostra API personalizzata utilizzando la libreria PHP CURL.

Come funziona

Prima di andare avanti e testare il nostro modulo API personalizzato, devi assicurarti di aver creato le credenziali utente API dal back-end di OpenCart.

Se non l'hai ancora fatto, è abbastanza facile. Dirigiti verso il back-end, vai a Sistema> Utenti> API, e aggiungi un nuovo utente API. Mentre lo fai, è importante notare che devi anche aggiungere un indirizzo IP dal quale devi effettuare chiamate API.

Vai avanti e crea un common.php file e incolla i seguenti contenuti in quel file.

$ valore) $ params_string. = $ chiave. '='. $ valore. '&';  rtrim ($ params_string, '&'); curl_setopt ($ ch, CURLOPT_POST, count ($ params)); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ params_string);  // esegue post $ result = curl_exec ($ ch); // chiudi connessione curl_close ($ ch); ritorno $ risultato; 

Come puoi vedere, contiene solo una funzione, do_curl_request, che farà una chiamata CURL all'URL passato dal $ url discussione. Il secondo argomento è un array di parametri nel caso in cui sia necessario POSTare i dati.

Le altre cose importanti da notare sono le CURLOPT_COOKIEJAR e  CURLOPT_COOKIEFILE impostazioni. Questi impostano il file in cui verranno memorizzati e letti i cookie. Poiché avremo bisogno di effettuare chiamate autenticate, è un must! Certo, vuoi cambiare il percorso /tmp/apicookie.txt in base alle impostazioni del tuo sistema. Assicurati che sia scrivibile anche dal server web!

Infine, la funzione restituisce la risposta dalla richiesta CURL!

Ovviamente, la prima cosa da fare è avviare la sessione e sarà necessario utilizzare il metodo di accesso. Diamo un'occhiata a un esempio. Vai avanti e crea un login.php file con il seguente contenuto.

 'Chiave' 'demouser', => 'ysvF7M1nqNYiZV3GFtU252jhn0FrCWMdH8Kw8qR6DApZ7RSJWCN7S0IvIxnti1QP2wUNsYCaG6vHa2l2q8FTFbWNwNYQUO58CfSYJHHJRG0vt7OBN60BnE5MdEVLBSSJVBZJ7ioFuiAmQN1dmBO56dmaawULlY8lnWFXQimecZznUo7NCJHp3rkL1tOAYgeIUl1oVjzrZ7cayikQEvUtwIGj7Ai4XudDH70E7hKGNJcXPiY5RfgFI8PQ8eLg1FZJ',); $ json = do_curl_request ($ url, $ campi); var_dump ($ JSON);

Innanzitutto, abbiamo incluso il common.php file creato nella sezione precedente. Quindi, il $ url variabile definisce l'URL di accesso all'API dello store OpenCart. Quindi, il campi $ array contiene le credenziali dell'utente API create in precedenza. 

Infine, chiamiamo il do_curl_request metodo per accedere. Importantemente, dovresti vedere a gettone variabile nel $ jSON oggetto. Annota il valore di tale variabile poiché dovremo passarlo mentre effettuiamo le successive chiamate API.

Quindi, creiamo a products.php file con il seguente contenuto.

Lo snippet importante da notare nell'esempio precedente è la variabile querystring del percorso. È impostato su API / custom / prodotti valore, che per convenzione chiama il prodotti metodo definito nel custom.php file del controller creato all'inizio di questo tutorial. Inoltre, abbiamo passato il gettone variabile insieme al suo valore per assicurarci di avere accesso all'API.

Ad ogni modo, quello che ci interessa è il giusto output codificato JSON nel $ data variabile. E questo è quello che dovresti vedere quando esegui il products.php file! Dovrebbe funzionare immediatamente se hai creato credenziali utente appropriate e configurato i file come spiegato.

Questo è solo un graffio sulla superficie di ciò che l'API REST di OpenCart è capace. Nel nostro caso, è stato un esempio piuttosto semplice ma efficace per dimostrare l'argomento. Detto questo, è possibile estenderlo e implementare soluzioni su misura in base alle proprie esigenze.

Questo è tutto per l'articolo di oggi. Non esitate a fare domande e lasciare i vostri suggerimenti in quanto sono preziosi!

Conclusione

Oggi abbiamo discusso su come creare un'API personalizzata in OpenCart creando un modulo personalizzato. Nel processo, siamo passati attraverso il flusso di lavoro completo per ottenere la funzionalità di cui sopra.

Puoi raggiungermi tramite la sezione dei feed qui sotto, e trascorro anche un po 'di tempo su Twitter se preferisci contattarmi lì!