HTTP objekta izmantošana Node.js

Satura rādītājs
HTTP modulis mūsu pieteikumos Node.js Tie palīdz mums izveidot daļu funkcionalitātes, lai mūsu serveri atdzīvotos, tomēr tas nav ekskluzīvs lietojums, ko mēs varam piešķirt šim modulim.
Patiesais spēks HTTP ir redzams, kad mēs izmantojam jūsu objektu, lai apstrādātu dažādus pieprasījumus vai pieprasījumu kas var nākt no mūsu lietojumprogrammas, ar to mēs varam apstrādāt datus, kas nāk no POST izmantojot veidlapas vai klientu pieprasījumus ATPŪTA.
Apmācības prasībasLai veiktu šajā apmācībā piedāvātos vingrinājumus, mums ir jābūt funkcionālai instalācijai Node.js mūsu sistēmā un ir atļaujas tai piekļūt. Ir arī svarīgi, lai varētu piekļūt bagātināta teksta redaktoram, lai kodētu piemērus, mēs varam izmantot visu, kas mums šķiet ērti, tomēr, lai to ērti izmantotu, mēs iesakām Cildens teksts vai NotePad ++ kuriem ir arī sintakses papildinājumi JavaScript Y HTML.
Datu apstrāde POST ļauj mums iegūt datus no veidlapām, ar to mēs varam apstrādāt datus, kas iegūti no lietotāju mijiedarbības ar mūsu lietojumprogrammām, tādējādi ļaujot ieviest biznesa loģiku minēto datu apstrādei.
Tiešākais veids, kā mums ir jāapstrādā dati POST tas ir cauri HTTP objekts, tieši mijiedarbojoties ar metodi createServer () mēs varam arī noteikt pieprasījuma metodes veidu POST vai GŪT un pat PUT Y DZĒST.
Ja mēs esam novērotāji, mēs redzam, ka tas liek mums kaut kādā veidā domāt par mūsu lietojumprogrammām RESTful, tas ir, mēs varam ar to sazināties, izmantojot dažādus klientus, nevis obligāti ar veidlapām HTMLTomēr šī ir tēma, kas pārsniedz šo apmācību.
Pirmā lieta, ko mēs darīsim, ir izveidot nelielu veidlapu, kas ļaus mums pārlūkprogrammā iegūt mūsu lietojumprogrammas datus, tāpēc mēs izveidosim failu ar nosaukumu form.html mūsu lietojumprogrammas direktorijā vai mapē.
Pēdējais nav ieteicams ražošanas vidē, tāpēc mēs to ņemsim tikai kā atsauci, lai varētu parādīt, kā sistēma darbojas. HTTP objekts. Mūsu veidlapas kods būs šāds:


Kā redzam, mēs vienkārši norādām savai veidlapai, ka tai jāizmanto šī metode POST, mums ir pāris teksta lauki un visbeidzot poga Iesniegt lai nosūtītu mūsu datus uz serveri.
Tagad mums ir jāizveido serveris Node.js kas mums palīdzēs apkopot datus no veidlapas, šeit mums jāņem vērā divas iespējas, pirmā ir tad, kad mēs piekļūstam mūsu lietojumprogrammas ceļam, izmantojot šo metodi GŪT un šeit mums vajadzētu parādīt savu formu.
Otra iespēja ir, kad tiek nosūtīti veidlapas dati, un tāpēc mums šī metode ir jāapstiprina POST kas ir vingrinājuma mērķis. Lai mēs varētu parādīt veidlapu, mums ir jāizveido sinhronā sastāvdaļa, kas nolasa mūsu failu form.html un pasniegt to attiecīgajā maršrutā, tāpēc mēs varam paļauties uz šo metodi readFileSync no moduļa fs.
Nākamajā daļā mums jāpanāk, lai mūsu serveris varētu apstrādāt datus POST, šim nolūkam mēs vienkārši parādīsim, ko ar šo metodi saņemam konsolē console.log (), tādā veidā mēs varam apstiprināt, ka viss darbojas pareizi, apskatīsim sākotnējo kodu, lai sasniegtu vēlamo:
 var http = pieprasīt ('http'); var querystring = pieprasīt ('querystring'); var util = pieprasīt ('util'); var form = pieprasīt ('fs'). readFileSync ('form.html'); http .createServer (funkcija (pieprasījums, atbilde) {if (request.method === "POST") {var dataPost = ''; request.on ('data', function (chunk) {dataPost + = chunk;}). on ('end', function () {var dataPostObject = querystring.parse (dataPost); console.log ('Lietotāja nosūtīti dati: \ n', dataPost); response.end ('Jūs esat nosūtījis datus: \ n'+ util.inspect (dataPostObject));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response. end ( veidlapa);}}) klausieties (8082);
Lai viss būtu pēc iespējas salasāmāks, moduļi tika papildus iekļauti vaicājuma virkne Y Noderīga, ar tiem mēs varam apstrādāt informāciju, kas nāk no servera, un tādējādi spēt manipulēt ar to, lai to izdrukātu.
Apskatīsim, kā sākotnēji jāizskatās mūsu veidlapai, kad mēs sākam lietotni un atveram pārlūkprogrammu projekta saknes ceļā:

PALIELINĀT

Tagad mēs ievadīsim dažus datus mūsu veidlapā redzamajos teksta laukos un noklikšķināsim uz pogas Sūtīt, tas parādīs mums ekrānu ar nosūtītajiem datiem un izdrukās mums konsoli. pieprasīt vienkāršu, tas ir, kā tas ir saņemts mūsu lietojumprogrammā:

Mēs redzējām, ka ir bijis ļoti viegli apstrādāt veidlapas datus, vismaz parādīt tos vēlreiz.
Lai gan iepriekšējais piemērs darbojas pareizi, tam ir daži trūkumi - ja lietojumprogramma tiktu sākta ražošanā, tā varētu mums sagādāt lielākas galvassāpes, piemēram, kas notiek, ja tā mums nosūta vairāk datu, nekā mūsu servera atmiņa spēj nodrošināt, acīmredzot visa struktūra sabruks. Ja mēs saņemam datus no POST tukšs, pašreizējā mūsu lietojumprogrammas stāvoklī tas neizdotos, un mēs saņemtu kļūdu, kuras dēļ mūsu pakalpojums avarētu un pārstātu darboties.
Lai labotu šos defektus, mums vienkārši jāiekļauj dažas ļoti vienkāršas validācijas, pirmkārt, mēs iekļausim mainīgo, kas palīdzēs mums ierobežot saņemtos datus līdz maksimālajam 2 MBTas mums var sniegt nelielu drošību, ka vismaz ar dažiem lietotājiem sistēmas avārija nebūs iespējama. Tad mēs to izvērtēsim tā, lai mūsu pieprasījums POST apstrādāt tālāk HTTP objekts kas to satur, nevar būt tukšs, tāpēc mēs nodrošinām, ka mūsu serverī nav tiešu kļūmju. Apskatīsim iepriekš minēto kodu ar atbilstošām izmaiņām:
 var http = pieprasīt ('http'); var querystring = pieprasīt ('querystring'); var util = pieprasīt ('util'); var form = pieprasīt ('fs'). readFileSync ('form.html'); var maxData = 2 * 1024 * 1024; http.createServer (funkcija (pieprasījums, atbilde) {if (request.method === "POST") {var dataPost = ''; request.on ('data', function (chunk) {dataPost + = chunk; if ( dataPost.length> maxData) {dataPost = "; this.destroy (); response.writeHead (413); response.end (" Ievadītie dati pārsniedz mūsu iespējas ");}}). on (" end ", function () {if (! PostData) {response.end (); return;} var ObjectPostData = querystring.parse (PostData); console.log ('Lietotājs nosūtīja datus: \ n', PostData); response.end ( 'Jūs esat nosūtījis datus: \ n' + util.inspect (datosPostObjeto));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': ' text / html '}); response.end (veidlapa);}}). klausīties (8082);
Ja mēs saņemam datus, kas lielāki par 2 MB, mēs vienkārši uzrakstām galveni HTTP 413 lai norādītu gadījumu, un mēs nekavējoties iznīcinām saņemtos datus, lai nevajadzīgi neuzturētu slodzi uz mūsu serveri.
Gadījumā, ja mēs saņemam tukšus datus no POST, mēs vienkārši turpinām izpildi, neļaujot pakalpojumam negaidīti nomirt.
Vēl viens metodes pielietojums POST no HTTP lai varētu saņemt failus, šim nolūkam mūsu sistēmā ir jāinstalē papildinājums, un tā ir milzīga pakete, lai sasniegtu šo mērķi konsolē Node.js mēs izpildīsim šādu kodu:
 npm instalēt [email protected]
Tam vajadzētu būt šādam:

Nākamajā darbībā mēs mainīsim savu form.html ar šādu kodu:


Būtībā mēs izdarījām izmaiņas veidlapas galvenē, lai mūsu serveris zinātu, ka tas saņems kaut ko vairāk nekā tikai tekstu, un mēs arī mainījām teksta laukus uz failiem. Visbeidzot, mēs mainīsim savu failu server.js un mēs ievietojam šādu kodu:
 var http = pieprasīt ('http'); var formidable = pieprasīt ('formidable'); var form = pieprasīt ('fs'). readFileSync ('form.html'); http.createServer (funkcija (pieprasījums, atbilde) { if (request.method === "POST") {var ienākošais = jauns formidable.IncomingForm (); ienākošais.uploadDir = 'faili'; ienākošais.on ('fails', funkcija (lauks, fails) {ja (! fails .size) {return;} response.write (faila nosaukums + 'saņemts \ n');}). on ('end', function () {response.end ('Visi faili tika saņemti');}); ienākošais.parse (pieprasījums);} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response.end (forma);} }) .klausi (8082);
Mēs redzam, kā modulis briesmīgs ir tas, kurš palīdz mums apstrādāt failu augšupielādi, tas tos saglabās mapē ar nosaukumu ieraksti, Lai mērķa mape darbotos, tai ir jābūt rakstīšanas atļaujai Node.js.
Ar šo pēdējo mēs esam pabeiguši mūsu apmācību, jo mēs redzējām, ka mums ir vairākas iespējas, ar kurām mēs varam apstrādāt pieprasījumus POST izmantojot objektu HTTP mūsu serverī Node.js, papildus visām priekšrocībām, ko tas pievieno mūsu attīstībai.

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave