Brug af HTTP -objektet i Node.js

Indholdsfortegnelse
Det HTTP -modul inden for vores ansøgninger, der er skrevet ind Node.js De hjælper os med at opbygge en del af funktionaliteten for at gøre vores servere levende, men dette er ikke den eksklusive brug, vi kan give dette modul.
Den sande kraft af HTTP ses, når vi bruger dit objekt til at behandle de forskellige anmodninger eller anmodning der kan komme fra vores applikation, med dette kan vi behandle de data, der kommer fra STOLPE gennem formularer eller kundeanmodninger HVILE.
VejledningskravFor at udføre de øvelser, der foreslås i denne vejledning, skal vi have en funktionel installation af Node.js i vores system og har tilladelser til at få adgang til det. Det er også vigtigt at have adgang til en rich text -editor til at kode eksemplerne, vi kan bruge alt, hvad vi føler os trygge ved, men for dets brugervenlighed anbefaler vi Sublim tekst eller NotePad ++ som også har tilføjelsesprogrammer til syntaksen JavaScript Y HTML.
Databehandling STOLPE giver os mulighed for at erhverve data fra formularer, med dette kan vi håndtere data, der kommer fra brugerinteraktioner med vores applikationer, og dermed tillade os at implementere forretningslogik til at behandle disse data.
Den mest direkte måde, vi skal behandle dataene på STOLPE det er igennem HTTP -objekt, gennem direkte interaktion med metoden createServer () vi kan enten identificere anmodningstypen STOLPE eller og endda SÆTTE Y SLET.
Hvis vi er observatører, ser vi, at dette får os til at tænke over vores applikationer på en måde Rolig, det vil sige, at vi kan kommunikere med det gennem forskellige klienter og ikke nødvendigvis med formularer HTMLDet er imidlertid et emne, der går ud over denne vejledning.
Den første ting, vi vil gøre, er at oprette en lille formular, som giver os mulighed for at fange dataene fra vores applikation i browseren, til dette vil vi oprette en fil kaldet form.html i biblioteket eller mappen i vores applikation.
Sidstnævnte anbefales ikke i et produktionsmiljø, så vi vil kun tage det som en reference for at kunne demonstrere, hvordan systemet fungerer. HTTP -objekt. Koden til vores formular vil være følgende:


Som vi kan se, angiver vi ganske enkelt til vores form, at den skal bruge metoden STOLPE, vi har et par tekstfelter, og endelig en knap Indsend at sende vores data til serveren.
Nu skal vi oprette serveren Node.js det vil hjælpe os med at indsamle data fra formularen, her skal vi tage højde for to muligheder, den første er, når vi får adgang til vores applikations sti, dette vil være ved hjælp af metoden og det er her, vi skal vise vores form.
Den anden mulighed er, når formulardataene sendes, og for dette skal vi validere metoden STOLPE hvilket er målet med øvelsen. For at vi kan vise formularen, skal vi oprette en synkron komponent, der læser vores fil form.html og server den på den tilsvarende rute, for dette kan vi stole på metoden readFileSync af modulet fs.
I den næste del skal vi få vores server til at håndtere dataene STOLPE, for dette vil vi simpelthen vise, hvad vi modtager i konsollen med metoden console.log ()På denne måde kan vi bekræfte, at alt fungerer korrekt, lad os se den første kode for at opnå det, vi ønsker:
 var http = require ('http'); var querystring = require ('querystring'); var util = require ('util'); var form = require ('fs'). readFileSync ('form.html'); http .createServer (funktion (anmodning, svar) {if (request.method === "POST") {var dataPost = ''; request.on ('data', funktion (chunk) {dataPost + = chunk;}). on ('end', function () {var dataPostObject = querystring.parse (dataPost); console.log ('Bruger sendt data: \ n', dataPost); response.end ('Du har sendt data: \ n'+ util.inspect (dataPostObject));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response. end ( form);}}). lyt (8082);
For at gøre alt så læseligt som muligt blev modulerne yderligere indarbejdet querystring Y Nyttig, med dem kan vi behandle de oplysninger, der kommer fra serveren og dermed være i stand til at manipulere dem med at udskrive dem.
Lad os se, hvordan vores formular i første omgang skal se ud, når vi starter vores applikation og åbner browseren ved projektets rodsti:

FORSTØRRE

Vi skal nu indtaste nogle data i de tekstfelter, vi ser i vores formular og klikke på send -knappen, dette vil vise os en skærm med de sendte data, og det vil udskrive konsollen til os. anmode om almindelig, det vil sige, som det modtages af vores ansøgning:

Vi har da set, at det har været meget let at behandle formulardataene, i hvert fald at vise det igen.
Selvom det foregående eksempel fungerer korrekt, har det nogle svagheder ved, at hvis applikationen skulle gå i produktion, kan det forårsage mere hovedpine, for eksempel hvad der sker, hvis det sender os flere data, end vores servers hukommelse kan understøtte, naturligvis vores hele strukturen ville kollapse. Hvis vi modtager data fra STOLPE tom, i den aktuelle tilstand af vores applikation ville det mislykkes, og vi ville få en fejl, der ville få vores service til at gå ned og stoppe med at fungere.
For at rette op på disse fejl skal vi simpelthen inkorporere nogle meget enkle valideringer, først og fremmest vil vi inkorporere en variabel, der hjælper os med at begrænse de modtagne data til et maksimum på 2 MBDette kan give os en lille sikkerhed for, at det i hvert fald med få brugere ikke vil være muligt for systemet at gå ned. Derefter vil vi evaluere det, så vores anmodning STOLPE blive behandlet på HTTP -objekt der indeholder det, kan ikke være tomt, så vi sikrer, at der ikke er direkte fejl på vores server. Lad os se på koden ovenfor med de relevante ændringer:
 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 (funktion (anmodning, svar) {if (request.method === "POST") {var dataPost = ''; request.on ('data', funktion (chunk) {dataPost + = chunk; hvis ( dataPost.length> maxData) {dataPost = ''; this.destroy (); response.writeHead (413); response.end ('De indtastede data overstiger vores kapacitet');}}). on ('end', funktion () {if (! PostData) {response.end (); return;} var ObjectPostData = querystring.parse (PostData); console.log ('Brugeren sendte dataene: \ n', PostData); response.end ( 'Du har sendt dataene: \ n' + util.inspect (datosPostObjeto));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': ' tekst / html '}); response.end (form);}}). lyt (8082);
Hvis vi modtager data større end 2 MB, skriver vi simpelthen et overskrift HTTP 413 for at angive sagen, og vi ødelægger øjeblikkeligt de modtagne data for ikke at beholde belastningen på vores server unødigt.
I tilfælde af at vi modtager tomme data fra STOLPE, vi fortsætter simpelthen vores henrettelse og forhindrer tjenesten i at dø uventet.
En anden brug, som vi kan give til metoden STOLPE af HTTP er for at kunne modtage filer, til dette skal vi installere et supplement i vores system, og det er den formidable pakke, for at nå dette mål i konsollen Node.js vi vil udføre følgende kode:
 npm installer [email protected]
Dette skal være som følger:

Næste handling vil vi ændre vores form.html med følgende kode:


Grundlæggende var det, vi gjorde, at ændre overskriften på formularen, så vores server ved, at den vil modtage noget mere end bare tekst, og vi ændrede også tekstfelterne til filer. Endelig vil vi ændre vores fil server.js og vi vil placere følgende kode:
 var http = require ('http'); var formidable = require ('formidable'); var form = require ('fs'). readFileSync ('form.html'); http.createServer (funktion (anmodning, svar) { if (request.method === "POST") {var incoming = new formidable.IncomingForm (); incoming.uploadDir = 'files'; incoming.on ('file', function (field, file) {if (! file .size) {return;} response.write (filnavn + 'modtaget \ n');}). on ('ende', funktion () {response.end ('Alle filer blev modtaget');}); incoming.parse (anmodning);} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response.end (form);} }). lyt (8082);
Vi ser, hvordan modulet formidabel er den, der hjælper os med at behandle upload af filer, dette gemmer dem i en mappe kaldet optegnelser, som for at destinationsmappen skal fungere, skal have skrivetilladelse til Node.js.
Med dette sidste har vi afsluttet vores tutorial, da vi så, at vi har flere muligheder, som vi kan behandle anmodningerne med STOLPE ved hjælp af objektet HTTP på vores server Node.js, ud over alle de fordele, det føjer til vores udvikling.
wave wave wave wave wave