Utilizarea obiectului HTTP în Node.js

Cuprins
Modul HTTP în cadrul aplicațiilor noastre scrise în Node.js Acestea ne ajută să construim o parte din funcționalitatea pentru ca serverele noastre să prindă viață, totuși aceasta nu este utilizarea exclusivă pe care o putem da acestui modul.
Adevărata putere a HTTP se vede când folosim obiectul dvs. pentru a procesa diferitele solicitări sau cerere care poate proveni din aplicația noastră, cu aceasta putem prelucra datele care provin POST prin formulare sau cereri ale clienților ODIHNĂ.
Cerințe tutorialePentru a efectua exercițiile propuse în acest tutorial trebuie să avem o instalare funcțională de Node.js în sistemul nostru și avem permisiuni pentru a-l accesa. De asemenea, este important să aveți acces la un editor de text bogat pentru a codifica exemplele, putem folosi orice ne simțim confortabil, totuși, pentru ușurința sa de utilizare, vă recomandăm Text sublim sau NotePad ++ care au și suplimente pentru sintaxă JavaScript Da HTML.
Procesarea datelor POST ne permite să achiziționăm date din formulare, cu aceasta putem gestiona datele care provin din interacțiunile utilizatorilor cu aplicațiile noastre, permițându-ne astfel să implementăm logica de afaceri pentru a procesa respectivele date.
Cea mai directă modalitate de a procesa datele POST este prin Obiect HTTP, prin interacțiunea directă cu metoda createServer () putem identifica fie tipul de metodă al cererii POST sau OBȚINE și chiar A PUNE Da ȘTERGE.
Dacă suntem observatori, vedem că acest lucru ne face să ne gândim la aplicațiile noastre într-un fel Odihnitor, adică putem comunica cu acesta prin diferiți clienți și nu neapărat cu formulare HTMLCu toate acestea, acesta este un subiect care depășește acest tutorial.
Primul lucru pe care îl vom face este să creăm un mic formular care ne va permite să capturăm datele aplicației noastre în browser, pentru aceasta vom crea un fișier numit form.html în directorul sau folderul aplicației noastre.
Acesta din urmă nu este recomandat într-un mediu de producție, așa că îl vom lua doar ca referință pentru a putea demonstra cum funcționează sistemul. Obiect HTTP. Codul formularului nostru va fi următorul:


După cum putem vedea, indicăm pur și simplu formularului nostru că trebuie să utilizeze metoda POST, avem câteva câmpuri de text și, în cele din urmă, un buton Trimite pentru a trimite datele noastre către server.
Acum trebuie să creăm serverul Node.js care ne va ajuta să colectăm datele din formular, aici trebuie să ținem cont de două posibilități, prima este când accesăm calea aplicației noastre, aceasta va fi folosind metoda OBȚINE și aici ar trebui să ne arătăm forma.
A doua posibilitate este când sunt trimise datele formularului și pentru aceasta trebuie să validăm metoda POST care este scopul exercițiului. Pentru ca noi să afișăm formularul, trebuie să creăm o componentă sincronă care să citească fișierul nostru form.html și serviți-l pe ruta corespunzătoare, pentru aceasta ne putem baza pe metodă readFileSync a modulului fs.
În partea următoare trebuie să facem ca serverul nostru să poată gestiona datele POST, pentru aceasta vom arăta pur și simplu ceea ce primim în consolă cu metoda console.log (), în acest fel putem confirma că totul funcționează corect, să vedem codul inițial pentru a realiza ceea ce dorim:
 var http = require ('http'); var querystring = require ('querystring'); var util = require ('util'); var form = require ('fs'). readFileSync ('form.html'); http .createServer (funcție (cerere, răspuns) {if (request.method === "POST") {var dataPost = ''; request.on ('data', funcție (bucată) {dataPost + = bucată;}). on ('end', function () {var dataPostObject = querystring.parse (dataPost); console.log ('Utilizatorul a trimis date: \ n', dataPost); response.end ('Ați trimis date: \ n' + util.inspect (dataPostObject));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response. end ( forma);}}). asculta (8082);
Pentru a face totul cât mai lizibil posibil, modulele au fost încorporate suplimentar șir de interogare Da Util, cu ei putem procesa informațiile care vin de la server și astfel putem să le manipulăm pentru a le imprima.
Să vedem cum ar trebui să arate inițial formularul nostru atunci când pornim aplicația și deschidem browserul la calea rădăcină a proiectului:

MARI

Acum vom introduce câteva date în câmpurile de text pe care le vedem în formularul nostru și vom face clic pe butonul de trimitere, acesta ne va prezenta un ecran cu datele trimise și ne va imprima consola. cerere simplă, adică așa cum este primit de aplicația noastră:

Am văzut atunci că a fost foarte ușor să procesăm datele formularului, cel puțin să le afișăm din nou.
Deși exemplul anterior funcționează corect, are unele puncte slabe care, dacă aplicația ar intra în producție, ne-ar putea provoca mai multă durere de cap, de exemplu, ce se întâmplă dacă ne trimite mai multe date decât poate suporta memoria serverului nostru, evident că întreaga structură s-ar prăbuși. Dacă primim date de la POST gol, în starea actuală a aplicației noastre ar eșua și vom primi o eroare care ar provoca blocarea serviciului nostru și oprirea funcționării.
Pentru a corecta aceste defecte trebuie pur și simplu să încorporăm câteva validări foarte simple, în primul rând vom încorpora o variabilă care ne va ajuta să limităm datele primite la maximum 2 MBAcest lucru ne poate oferi puțină siguranță că cel puțin cu puțini utilizatori nu va fi posibil ca sistemul să se blocheze. Apoi vom evalua acest lucru astfel încât solicitarea noastră POST să fie procesat pe Obiect HTTP care îl conține nu poate fi gol, astfel ne asigurăm că nu există eșecuri directe pe serverul nostru. Să vedem codul de mai sus cu modificările corespunzătoare:
 var http = require ('http'); var querystring = require ('querystring'); var util = require ('util'); var form = require ('fs'). readFileSync ('form.html'); var maxData = 2 * 1024 * 1024; http.createServer (funcție (cerere, răspuns) {if (request.method === "POST") {var dataPost = ''; request.on ('data', funcție (bloc)) {dataPost + = bloc; dacă ( dataPost.length> maxData) {dataPost = ''; this.destroy (); response.writeHead (413); response.end ('Datele introduse depășesc capacitatea noastră');}}). on ('end', funcție () {if (! PostData) {response.end (); return;} var ObjectPostData = querystring.parse (PostData); console.log ('Utilizatorul a trimis datele: \ n', PostData); response.end ( 'Ați trimis datele: \ n' + util.inspect (datosPostObjeto));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': ' text / html '}); response.end (formular);}}). asculta (8082);
Dacă primim date mai mari de 2 MB, scriem pur și simplu un antet HTTP 413 pentru a indica cazul și distrugem imediat datele primite pentru a nu păstra sarcina pe serverul nostru inutil.
În cazul în care primim date goale de la POST, pur și simplu ne continuăm execuția, împiedicând serviciul să moară în mod neașteptat.
O altă utilizare pe care o putem da metodei POST de HTTP este de a putea primi fișiere, pentru aceasta trebuie să instalăm un complement în sistemul nostru și este pachetul formidabil, pentru a atinge acest obiectiv în consolă Node.js vom executa următorul cod:
 npm instala [email protected]
Acest lucru ar trebui să fie după cum urmează:

Următorul act îl vom modifica pe al nostru form.html cu următorul cod:


Practic, ceea ce am făcut a fost să modificăm antetul formularului, astfel încât serverul nostru să știe că va primi ceva mai mult decât doar text și am schimbat și câmpurile de text în fișiere. În cele din urmă, vom modifica fișierul nostru server.js și vom plasa următorul cod:
 var http = require ('http'); var formidable = require ('formidable'); var form = require ('fs'). readFileSync ('form.html'); http.createServer (funcție (cerere, răspuns) { if (request.method === "POST") {var incoming = new formidable.IncomingForm (); incoming.uploadDir = 'files'; incoming.on ('file', funcție (câmp, fișier) {if (! fișier) .size) {return;} response.write (file.name + 'primit \ n');}). on ('end', function () {response.end ('Toate fișierele au fost primite');}); incoming.parse (request);} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response.end (formular);} }). asculta (8082);
Vedem modul în care modulul formidabil este cel care ne ajută să procesăm încărcarea fișierelor, acestea le vor stoca într-un folder numit înregistrări, care pentru ca folderul de destinație să funcționeze trebuie să aibă permisiunea de scriere Node.js.
Cu acest ultim ne-am terminat tutorialul, deoarece am văzut că avem mai multe opțiuni cu care putem procesa cererile POST folosind obiectul HTTP pe serverul nostru Node.js, pe lângă toate avantajele pe care le adaugă dezvoltărilor noastre.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave