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.
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
eCURLOPT_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, ilcampi $
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 ilprodotti
metodo definito nelcustom.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 ilproducts.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ì!