Použití objektu HTTP v Node.js

Obsah
The Modul HTTP v našich aplikacích napsaných v Node.js Pomáhají nám vybudovat část funkcí, aby naše servery ožily, ale toto není výhradní použití, které můžeme tomuto modulu poskytnout.
Skutečná síla HTTP je vidět, když použijeme váš objekt ke zpracování různých požadavků nebo žádost které mohou pocházet z naší aplikace, a díky tomu můžeme zpracovávat data, ze kterých pochází POŠTA prostřednictvím formulářů nebo požadavků zákazníků ZBYTEK.
Požadavky na výukuAbychom mohli provádět cvičení navržená v tomto tutoriálu, musíme mít funkční instalaci Node.js v našem systému a mít oprávnění k přístupu. Je také důležité mít přístup k editoru formátovaného textu pro kódování příkladů, můžeme použít cokoli, co nám vyhovuje, nicméně pro jeho snadné použití doporučujeme Vznešený text nebo NotePad ++ které mají také doplňky pro syntaxi JavaScript Y HTML.
Zpracování dat POŠTA nám umožňuje získávat data z formulářů, díky čemuž můžeme zpracovávat data, která pocházejí z interakcí uživatelů s našimi aplikacemi, což nám umožňuje implementovat obchodní logiku ke zpracování uvedených dat.
Nejpřímější způsob, jakým musíme data zpracovávat POŠTA je to skrz Objekt HTTPprostřednictvím přímé interakce s touto metodou createServer () můžeme také určit typ metody požadavku POŠTA nebo DOSTAT a dokonce DÁT Y VYMAZAT.
Pokud jsme pozorovatelé, vidíme, že nás to nutí přemýšlet o našich aplikacích určitým způsobem Klidný, to znamená, že s ním můžeme komunikovat prostřednictvím různých klientů a ne nutně pomocí formulářů HTMLTo je však téma, které přesahuje tento tutoriál.
První věcí, kterou uděláme, je vytvoření malého formuláře, který nám umožní zachytit data naší aplikace v prohlížeči, za tímto účelem vytvoříme soubor s názvem form.html v adresáři nebo složce naší aplikace.
Ten druhý se v produkčním prostředí nedoporučuje, takže ho budeme brát pouze jako referenci, abychom mohli demonstrovat, jak systém funguje. Objekt HTTP. Kód našeho formuláře bude následující:


Jak vidíme, jednoduše našemu formuláři naznačíme, že musí použít metodu POŠTA„Máme několik textových polí a nakonec tlačítko Předložit zaslat naše data na server.
Nyní musíme vytvořit server Node.js to nám pomůže shromáždit data z formuláře, zde musíme vzít v úvahu dvě možnosti, první je, když přistoupíme na cestu naší aplikace, bude to pomocí metody DOSTAT a tady bychom měli ukázat naši formu.
Druhá možnost je, když jsou data formuláře odeslána, a proto musíme metodu ověřit POŠTA což je cílem cvičení. Abychom mohli zobrazit formulář, musíme vytvořit synchronní komponentu, která čte náš soubor form.html a podávat ji na odpovídající trase, proto se můžeme na metodu spolehnout readFileSync modulu fs.
V další části musíme zajistit, aby náš server mohl zpracovávat data POŠTA, za tímto účelem jednoduše ukážeme, co pomocí metody obdržíme v konzole console.log ()Tímto způsobem můžeme potvrdit, že vše funguje správně, podívejme se na počáteční kód, abychom dosáhli toho, co chceme:
 var http = require ('http'); var querystring = require ('querystring'); var util = require ('util'); var form = require ('fs'). readFileSync ('form.html'); http .createServer (funkce (požadavek, odpověď) {if (request.method === "POST") {var dataPost = ''; request.on ('data', function (chunk) {dataPost + = chunk;}). on ('end', function () {var dataPostObject = querystring.parse (dataPost); console.log ('User sent data: \ n', dataPost); response.end ('You sent sent data: \ n'+ util.inspect (dataPostObject));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response. end ( formulář);}}). poslouchat (8082);
Aby bylo vše co nejčitelnější, byly moduly navíc zakomponovány Řetězec dotazu Y UžitečnýPomocí nich můžeme zpracovávat informace pocházející ze serveru, a tak s nimi můžeme manipulovat a tisknout je.
Podívejme se, jak by náš formulář měl zpočátku vypadat, když spustíme naši aplikaci a otevřeme prohlížeč na kořenové cestě projektu:

ZVĚTŠIT

Nyní zadáme nějaká data do textových polí, která vidíme v našem formuláři, a klikneme na tlačítko Odeslat, zobrazí se nám obrazovka s odeslanými daty a ta nám konzolu vytiskne. žádost prostá, to znamená, že je přijata naší aplikací:

Pak jsme viděli, že bylo velmi snadné zpracovat data formuláře, alespoň je znovu ukázat.
Ačkoli předchozí příklad funguje správně, má některé slabiny, že pokud by se aplikace dostala do produkce, mohlo by nás to způsobit větší bolest hlavy, například co se stane, když nám pošle více dat, než může podporovat paměť našeho serveru, samozřejmě naše celá struktura by se zhroutila. Pokud obdržíme data od POŠTA prázdný, v aktuálním stavu naší aplikace by selhal a my bychom dostali chybu, která by způsobila, že naše služba se zhroutí a přestane fungovat.
Abychom tyto vady napravili, musíme jednoduše začlenit několik velmi jednoduchých validací, v první řadě začleníme proměnnou, která nám pomůže omezit přijatá data na maximum 2 MBTo nám může poskytnout malou jistotu, že přinejmenším s několika uživateli nebude možné zhroucení systému. Poté to vyhodnotíme tak, aby naše žádost POŠTA být zpracovány na Objekt HTTP obsah, který obsahuje, nemůže být prázdný, a proto zajišťujeme, aby na našem serveru nedošlo k žádným přímým selháním. Podívejme se na výše uvedený kód s příslušnými úpravami:
 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 (funkce (požadavek, odpověď) {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 ('Zadaná data přesahují naši kapacitu');}}). on ('end', funkce () {if (! PostData) {response.end (); return;} var ObjectPostData = querystring.parse (PostData); console.log ('Uživatel odeslal data: \ n', PostData); response.end ( 'Odeslali jste data: \ n' + util.inspect (datosPostObjeto));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': ' text / html '}); response.end (formulář);}}). poslouchat (8082);
Pokud přijmeme data větší než 2 MB, jednoduše napíšeme záhlaví HTTP 413 k označení případu a okamžitě zničíme přijatá data, abychom zbytečně neudrželi zátěž na našem serveru.
V případě, že obdržíme prázdná data od POŠTA, jednoduše pokračujeme v provádění, abychom zabránili neočekávanému úmrtí služby.
Další využití, které můžeme metodě dát POŠTA z HTTP Abychom mohli přijímat soubory, musíme do našeho systému nainstalovat doplněk a je to impozantní balíček, abychom tohoto cíle dosáhli v konzole Node.js spustíme následující kód:
 npm install [email protected]
Mělo by to být následující:

Příští akt upravíme náš form.html s následujícím kódem:


V zásadě jsme změnili záhlaví formuláře, aby náš server věděl, že bude přijímat něco víc než jen text, a také jsme změnili textová pole na soubory. Nakonec náš soubor upravíme server.js a umístíme následující kód:
 var http = require ('http'); var formidable = require ('formidable'); var form = require ('fs'). readFileSync ('form.html'); http.createServer (funkce (požadavek, odpověď) { if (request.method === "POST") {var incoming = new formidable.IncomingForm (); incoming.uploadDir = 'files'; incoming.on ('file', function (field, file) {if (! file .size) {return;} response.write (název souboru + 'přijato \ n');}). on ('konec', funkce () {response.end ('Všechny soubory byly přijaty');}); incoming.parse (požadavek);} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response.end (form);} }). poslouchat (8082);
Vidíme, jak modul impozantní je ten, kdo nám pomáhá zpracovat nahrávání souborů, čímž je uloží do složky s názvem evidence, ke kterému má cílová složka fungovat, musí mít oprávnění k zápisu Node.js.
S tímto posledním jsme dokončili náš tutoriál, protože jsme viděli, že máme několik možností, pomocí kterých můžeme zpracovávat požadavky POŠTA pomocí předmětu HTTP na našem serveru Node.js, navíc ke všem výhodám, které přináší našemu vývoji.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave