Cauta rapid aici ↑

Cum sa gestionezi cererile de la client cu Nodejs

In urmatoarele randuri va voi arata cum sa gestionati cererile de la client (browser) in ceea ce priveste un site web. Primul lucru pe care trebuie sa il facem in acest proiect este sa avem totul intr-un director. In acest director vom avea un fisier JavaScript ce va contine script-ul nostru Nodejs. Al doilea lucru important este reprezentat de un subdirector ce contine fisierele noastre pe care le vom trimite browser-ului.

Gestionarea diferitelor cereri ce vin de la client in ceea ce priveste continutul text al unor fisiere se poate realiza in Nodejs cu ajutorul a doua module native ale acestuia pe care le vom insera in script-ul nostru in partea cea mai de sus si le vom declara in variabile cu acelasi nume. Modulele sunt http si fs. Inserarea in script a unui modul nativ sau nu se va face intotdeauna cu ajutorul metodei require. Cu ajutorul modului http vom creea serverul ce va raspunde diferitelor cereri ale browser-ului in ceea ce priveste continutul de tip HTML, CSS si JavaScript. Modulul fs ne va ajuta sa citim continutul fisierelor ce contin limbaj HTML, CSS si/sau JavaScript (ori alt tip) si apoi sa le inseram in obiectul res, obiect prin care ii vom trimite browser-ului continutul nostru.

Crearea unui server se va face cu ajutorul metodei createServer din modulul http. De aceasta metoda vom lega, inlantui metoda listen, metoda ce va avea in acest caz un singur parametru numeric reprezentat de portul catre care browser-ul sa astepte datele de la server. Metoda createServer va avea un singur parametru reprezentat de o functie callback ce la randul ei va avea doi parametri obiect ce contin date legate de mediul de la client si mediul de pe server. Obiectul req va contine date din mediul de la client iar obiectul res va contine raspunsul nostru catre client.

Obiectul req are in componenta lui proprietatea (string) url, proprietate ce contine tipul de cerere (request) catre o pagina anume iar in acest caz va avea ca valoare un simplu slash ( / ) reprezentand pagina principala. Pentru a afla ceea ce vrea browser-ul client, noi va trebui sa ne folosim de conditia if, conditie prin care vom compara informatiile pe care proprietatea string le contine. Din moment ce proprietatea url contine date de tip string, atunci putem lucra pe string-uri cu expresi regulate si din moment ce stim ca acest string request se termina in .css sau .js noi ne vom folosi de metoda match pentru a testa request-ul si trimite mai apoi continutul text din acel fisier.

Observati in interiorul metodei readFile cei trei parametri. Primul este reprezentat de un string ce reprezinta calea relativa catre fisierul respectiv, al doilea parametru este reprezentat de codarea caracterelor iar in absenta lui metoda readFile va returna continutul sub forma unui array buffer iar cel de-al treilea parametru fiind reprezentat de o functie anonima callback ce contine doi parametrii. Primul este reprezentat de obiectul err, obiect ce va contine o erroare in cazul in care aceasta apare iar cel de-al doilea parametru este reprezentat de un obiect ce contine continutul fisierului pe care il vom trimite browser-ului cu ajutorul metodei end de pe obiectul res. Nu uitati ca trebuie sa ii spunem browser-ului la ce tip de continut text sa se astepte sau altfel spus, la ce tip de limbaj sa interpreteze continutul de tip text.

In cele din urma, in cazul in care respectivul request nu este catre pagina principala ori fisierele CSS sau JavaScript, nu ne mai ramane decat sa ii afisam browser-ului client un text sau o pagina customizata HTML cu eroarea 404 si textul aferent erori.