Creați un API personalizat în OpenCart

Va trebui să creați API-uri personalizate pentru cerințe unice în dezvoltarea de proiecte la un moment dat și asta vom acoperi pe tot parcursul acestui tutorial. În modulul nostru API personalizat, vom prelua lista tuturor produselor disponibile în magazin și va fi o ieșire codată JSON, conform cerințelor standardelor REST în OpenCart.

Presupun că sunteți familiarizat cu procesul de dezvoltare a modulelor de bază în OpenCart. Iată un articol frumos care oferă o perspectivă cuprinzătoare asupra subiectului doar în cazul în care doriți să treceți prin el. Un alt aspect important: folosesc cea mai recentă versiune a OpenCart, care este 2.1.0.2 ca să scrie acest lucru și ar trebui să faceți acest lucru și pentru a asigura compatibilitatea API-urilor de bază.

Fără a pierde mult din timpul tău, mă voi îndrepta imediat spre chestiile practice, și asta este următoarea secțiune.

O privire la configurarea fișierelor

Să aruncăm o privire la lista de fișiere necesare pentru configurarea dorită.

  • Catalog / controler / api / custom.php: Este un fișier de controler și majoritatea logicii noastre de aplicație se află în acest fișier.
  • Catalog / language / ro-RO / api / custom.php: Este un fișier de limbă care conține variabilele de limbă.
  • common.php: Acest fișier conține codul comun pentru reutilizare.
  • login.php: Este un fișier care demonstrează cum să vă conectați la magazin utilizând API-ul REST.
  • products.php: Este un fișier care demonstrează modul de preluare a produselor utilizând modulul API personalizat.

Deci, asta e tot ce este necesar pentru a configura modulul API personalizat și pentru al testa folosind biblioteca PHP CURL.

Vom începe cu fișierul controlerului, mergeți mai departe și creați un fișier Catalog / controler / api / custom.php cu următorul conținut.

a sarcinii> limba ( 'api / personalizată'); $ json = array (); dacă isset ($ this-> session-> data ['api_id'])) $ json ['error'] ['warning'] = $ this-> language-> get ('error_permission');  altceva // încărcați modelul $ this-> load-> model ('catalog / product'); // obține produse $ products = $ this-> model_catalog_product-> getProducts (); $ json ['succes'] ['produse'] = $ produse;  dacă (isset ($ this-> request-> server ['HTTP_ORIGIN'])) $ this-> reply-> addHeader [ 'HTTP_ORIGIN']); $ this-> response-> addHeader ("Metode de acces-control-permiteți: GET, PUT, POST, DELETE, OPTIONS"); $ this-> response-> addHeader ("Access-Control-Max-Age: 1000"); $ this-> response-> addHeader ("Access-Control-Allow-Headers: Content-Type, Authorisation, X-Requested-With");  $ this-> response-> addHeader ("Content-Type: application / json"); $ This-> response-> setOutput (json_encode ($ json)); 

Probabil ar trebui să fie lucruri destul de familiare dacă știți despre structura fișierelor modulului OpenCart. Cu toate acestea, vom discuta despre fragmentele importante din produse metodă.

În primul rând, trebuie să verificăm autenticitatea solicitării și este verificată de existența acesteia api_id variabilă în sesiunea activă. În cazul unei cereri valide și autentificate, vom merge și vom prelua toate produsele utilizând getProducts metoda nucleului Produs model. Desigur, el va da un mesaj de eroare de permisiune refuzat în caz de autentificare nevalidă.

Apoi, există o verificare generală de securitate pentru a proteja împotriva atacurilor CSRF. Ea se realizează prin verificarea existenței HTTP_ORIGIN variabilă și adăugând anteturile corespunzătoare dacă există.

În cele din urmă, am folosit json_encode funcția de a codifica produse $ array, iar rezultatul este trecut ca argument al lui setOutput metodă.

Apoi, vom continua și vom crea un fișier lingvistic pentru modulul nostru Catalog / language / ro-RO / api / custom.php cu următorul conținut.

Deci, asta e în ceea ce privește configurarea fișierelor legate de OpenCart. Din următoarea secțiune, vom crea fișierele care ne ajută să testați API-ul personalizat utilizând biblioteca PHP CURL.

Cum functioneaza

Înainte de a continua și de a testa modulul API personalizat, trebuie să vă asigurați că ați creat acreditările de utilizator API din partea de back-end a OpenCart.

Dacă nu ați făcut-o încă, este destul de ușor. Treceți la spate, navigați la Sistem> Utilizatori> API, și adăugați un nou utilizator API. În același timp, este important să rețineți că trebuie, de asemenea, să adăugați o adresă IP de la care ar trebui să efectuați apeluri API.

Mergeți și creați o common.php fișierul și inserați conținutul următor în acel fișier.

$ valoare) $ params_string. = $ cheie. '='. $ value. '&';  rtrim ($ params_string, '&'); curl_setopt ($ ch, CURLOPT_POST, număr ($ params)); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ params_string);  // executați post $ result = curl_exec ($ ch); // închide conexiunea curl_close ($ ch); returneaza rezultatul $; 

După cum puteți vedea, acesta conține doar o funcție, do_curl_request, care va face un apel CURL la adresa URL trimisă de către $ url argument. Al doilea argument este o serie de parametri în cazul în care aveți nevoie de POST datele.

Celelalte lucruri importante pe care trebuie să le menționăm sunt CURLOPT_COOKIEJAR și  CURLOPT_COOKIEFILE Setări. Acestea stabilesc fișierul în care vor fi stocate și citite fișierele cookie. Deoarece va trebui să efectuăm apeluri autentice, este o necesitate! Desigur, vrei să schimbi calea /tmp/apicookie.txt în funcție de setările sistemului. Asigurați-vă că este scris și de serverul web!

În cele din urmă, funcția returnează răspunsul prin solicitarea CURL!

Evident, primul lucru pe care trebuie să-l faceți este să începeți sesiunea și va trebui să utilizați metoda de conectare. Să aruncăm o privire la un exemplu. Mergeți și creați o login.php fișier cu următorul conținut.

 , 'Cheia' 'demouser' => 'ysvF7M1nqNYiZV3GFtU252jhn0FrCWMdH8Kw8qR6DApZ7RSJWCN7S0IvIxnti1QP2wUNsYCaG6vHa2l2q8FTFbWNwNYQUO58CfSYJHHJRG0vt7OBN60BnE5MdEVLBSSJVBZJ7ioFuiAmQN1dmBO56dmaawULlY8lnWFXQimecZznUo7NCJHp3rkL1tOAYgeIUl1oVjzrZ7cayikQEvUtwIGj7Ai4XudDH70E7hKGNJcXPiY5RfgFI8PQ8eLg1FZJ',); $ json = do_curl_request ($ url, câmpuri $); var_dump ($ JSON);

În primul rând, am inclus common.php fișierul creat în secțiunea anterioară. Apoi, $ url variabila defineste URL-ul de conectare API al magazinului OpenCart. Apoi, câmpuri $ array deține datele de conectare ale utilizatorilor API create mai devreme. 

În cele din urmă, numim do_curl_request pentru a vă conecta. Este important să vedeți a jeton variabilă în $ JSON obiect. Notați valoarea acestei variabile, deoarece va trebui să o transmitem în timp ce efectuați apelurile API ulterioare.

Apoi, să creați o products.php fișier cu următorul conținut.

Fragmentul important de notat în exemplul de mai sus este variabila rutei querystring. Este setat la api / personalizate / produse valoare, care prin convenție numește produse metoda definită în custom.php fișierul de controler creat la începutul acestui tutorial. De asemenea, am trecut jeton variabilă împreună cu valoarea sa pentru a ne asigura că avem acces la API.

Oricum, ceea ce ne interesează este ieșirea codată JSON corespunzătoare în $ date variabil. Și asta ar trebui să vezi când alergi products.php fişier! Ar trebui să funcționeze din cutie dacă ați creat acreditările de utilizator corecte și ați configurat fișierele așa cum este explicat.

Aceasta este doar zgârierea suprafeței a ceea ce este capabil API-ul REST în OpenCart. În cazul nostru, a fost un exemplu destul de simplu dar eficient pentru a demonstra acest subiect. Acestea fiind spuse, ați putea să le extindeți și să implementați soluții personalizate în funcție de cerințele dumneavoastră.

Asta e pentru articolul de astăzi. Nu ezitați să întrebați întrebări și să vă lăsați sugestiile așa cum sunt valoroase!

Concluzie

Astăzi, am discutat despre cum puteți crea un API personalizat în OpenCart creând un modul personalizat. În acest proces, am parcurs procesul de lucru complet pentru a atinge funcționalitatea menționată mai sus.

Ai putea să mă contactezi prin secțiunea de feed de mai jos și îmi petrec un pic de timp pe Twitter dacă preferi să mă contactezi acolo!

Cod