Korištenje HTTP objekta u Node.js

Sadržaj
The HTTP modul unutar naših aplikacija napisanih na Node.js Oni nam pomažu u izgradnji dijela funkcionalnosti kako bi naši poslužitelji zaživjeli, međutim ovo nije isključiva upotreba koju možemo dati ovom modulu.
Istinska moć HTTP se vidi kada koristimo vaš objekt za obradu različitih zahtjeva ili zahtjev koji mogu doći iz naše aplikacije, s tim možemo obraditi podatke koji dolaze iz POST putem obrazaca ili zahtjeva kupaca ODMOR.
Tutorski zahtjeviZa izvođenje vježbi predloženih u ovom vodiču moramo imati funkcionalnu instalaciju Node.js u našem sustavu i imaju dozvole za pristup. Također je važno imati pristup uređivaču obogaćenog teksta za kodiranje primjera, možemo koristiti sve što nam odgovara, međutim, zbog njegove jednostavnosti korištenja, preporučujemo Uzvišen tekst ili NotePad ++ koji također imaju dodatke za sintaksu JavaScript Y HTML.
Obrada podataka POST omogućuje nam prikupljanje podataka iz obrazaca, s tim možemo obraditi podatke koji dolaze iz interakcije korisnika s našim aplikacijama, što nam omogućuje implementaciju poslovne logike za obradu navedenih podataka.
Najizravniji način obrade podataka POST to je kroz HTTP objekt, izravnom interakcijom s metodom createServer () možemo identificirati i vrstu metode zahtjeva POST ili DOBITI pa čak i STAVITI Y IZBRISATI.
Ako smo promatrači, vidimo da nas to tjera da na neki način razmislimo o svojim aplikacijama Miran, odnosno možemo komunicirati s njim putem različitih klijenata, a ne nužno i s obrascima HTMLMeđutim, to je tema koja nadilazi ovaj vodič.
Prvo što ćemo učiniti je stvoriti mali obrazac koji će nam omogućiti snimanje podataka naše aplikacije u pregledniku, za to ćemo stvoriti datoteku pod nazivom form.html u direktoriju ili mapi naše aplikacije.
Potonje se ne preporučuje u proizvodnom okruženju pa ćemo ga uzeti samo kao referencu kako bismo mogli pokazati kako sustav radi. HTTP objekt. Kod našeg obrasca bit će sljedeći:


Kao što vidimo, jednostavno ukazujemo svom obrascu da mora koristiti metodu POST, imamo nekoliko tekstualnih polja i na kraju gumb podnijeti za slanje naših podataka na poslužitelj.
Sada moramo stvoriti poslužitelj Node.js koji će nam pomoći pri prikupljanju podataka iz obrasca, ovdje moramo uzeti u obzir dvije mogućnosti, prva je kada pristupimo putu naše aplikacije, to će biti pomoću metode DOBITI i tu bismo trebali pokazati svoju formu.
Druga je mogućnost kada se šalju podaci obrasca, a za to moramo potvrditi metodu POST što je cilj vježbe. Da bismo mogli prikazati obrazac, moramo stvoriti sinkronu komponentu koja čita našu datoteku form.html i poslužiti ga na odgovarajućoj ruti, za to se možemo osloniti na metodu readFileSync modula fs.
U sljedećem dijelu moramo učiniti da naš poslužitelj može rukovati podacima POST, za to ćemo jednostavno pokazati što primimo u konzoli s ovom metodom console.log (), na ovaj način možemo potvrditi da sve radi ispravno, pogledajmo početni kod kako bismo postigli ono što želimo:
 var http = require ('http'); var querystring = require ('querystring'); var util = require ('util'); var form = require ('fs'). readFileSync ('form.html'); http .createServer (funkcija (zahtjev, odgovor) {if (request.method === "POST") {var dataPost = ''; request.on ('podaci', funkcija (komad) {dataPost + = komad;}). on ('kraj', funkcija () {var dataPostObject = querystring.parse (dataPost); console.log ('Podaci poslani od korisnika: \ n', dataPost); response.end ('Poslali ste podatke: \ n'+ util.inspect (dataPostObject));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response. end ( obrazac);}}). slušaj (8082);
Kako bi sve bilo što čitljivije, moduli su dodatno ugrađeni niz upita Y Koristan, s njima možemo obraditi informacije koje dolaze s poslužitelja i na taj način ih možemo manipulirati za ispis.
Pogledajmo kako bi naš obrazac u početku trebao izgledati kada pokrenemo aplikaciju i otvorimo preglednik na korijenskoj stazi projekta:

POVEĆAJTE

Sada ćemo unijeti neke podatke u tekstualna polja koja vidimo u našem obrascu i kliknuti gumb za slanje, prikazat će nam se zaslon s poslanim podacima i ispisat će nam konzolu. zahtjev običan, odnosno kako je primljeno našom aplikacijom:

Tada smo vidjeli da je bilo vrlo lako obraditi podatke obrasca, barem ih ponovno prikazati.
Iako prethodni primjer radi ispravno, on ima neke slabosti da bi, ako bi aplikacija krenula u proizvodnju, moglo biti uzrokovano više glavobolje, na primjer, što se događa ako nam šalje više podataka nego što memorija našeg poslužitelja može podržati, očito cijela bi se struktura srušila. Ako podatke primamo iz POST prazno, u trenutnom stanju naše aplikacije to bi propalo i dobili bismo pogrešku zbog koje bi se naša usluga srušila i prestala raditi.
Da bismo ispravili ove nedostatke, jednostavno moramo unijeti neke vrlo jednostavne provjere, prije svega ćemo ugraditi varijablu koja će nam pomoći ograničiti primljene podatke na najviše 2 MBTo nam može dati malo sigurnosti da barem s nekoliko korisnika neće biti moguće da se sustav sruši. Zatim ćemo to ocijeniti tako da naš zahtjev POST biti obrađen na HTTP objekt ono što ga sadrži ne može biti prazno, stoga osiguravamo da na našem poslužitelju nema izravnih kvarova. Pogledajmo gornji kod s odgovarajućim izmjenama:
 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 (funkcija (zahtjev, odgovor) {if (request.method === "POST") {var dataPost = ''; request.on ('podaci', funkcija (komad) {dataPost + = komad; if ( dataPost.length> maxData) {dataPost = ''; this.destroy (); response.writeHead (413); response.end ('Uneseni podaci premašuju naše kapacitete');}}). on ('kraj', funkcija () {if (! PostData) {response.end (); return;} var ObjectPostData = querystring.parse (PostData); console.log ('Korisnik je poslao podatke: \ n', PostData); response.end ( 'Poslali ste podatke: \ n' + util.inspect (datosPostObjeto));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': ' text / html '}); response.end (form);}}). listen (8082);
Ako primimo podatke veće od 2 MB, jednostavno zapišemo zaglavlje HTTP 413 za označavanje slučaja i odmah uništavamo primljene podatke kako ne bismo nepotrebno zadržali opterećenje na našem poslužitelju.
U slučaju da primamo prazne podatke od POST, jednostavno nastavljamo s izvršavanjem sprečavajući uslugu da neočekivano umre.
Druga upotreba koju možemo dati metodi POST od HTTP da bismo mogli primati datoteke, za to moramo instalirati dopunu u naš sustav i to je strašan paket za postizanje ovog cilja u konzoli Node.js izvršit ćemo sljedeći kod:
 npm install [email protected]
To bi trebalo biti sljedeće:

Sljedeći čin ćemo promijeniti form.html sa sljedećim kodom:


U osnovi smo promijenili zaglavlje obrasca tako da naš poslužitelj zna da će primiti nešto više od teksta, a tekstualna polja smo promijenili u datoteke. Na kraju ćemo izmijeniti našu datoteku server.js a mi ćemo postaviti sljedeći kod:
 var http = require ('http'); var formidable = require ('formidable'); var form = require ('fs'). readFileSync ('form.html'); http.createServer (funkcija (zahtjev, odgovor) { if (request.method === "POST") {var incoming = new formidable.IncomingForm (); incoming.uploadDir = 'datoteke'; incoming.on ('datoteka', funkcija (polje, datoteka) {if (! datoteka .size) {return;} response.write (file.name + 'primljeno \ n');}). on ('kraj', funkcija () {response.end ('Sve su datoteke primljene');}); incoming.parse (request);} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response.end (obrazac);} }). slušaj (8082);
Vidimo kako modul strašan je taj koji nam pomaže u obradi prijenosa datoteka, to će ih pohraniti u mapu tzv zapisi, koje za rad odredišne ​​mape moraju imati dozvolu za pisanje Node.js.
S ovim zadnjim smo završili naš vodič, jer vidjeli smo da imamo više mogućnosti s kojima možemo obraditi zahtjeve POST pomoću objekta HTTP na našem serveru Node.js, pored svih prednosti koje dodaje našem razvoju.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave