Korzystanie z obiektu HTTP w Node.js

Spisie treści
ten Moduł HTTP w ramach naszych aplikacji napisanych w Node.js Pomagają nam zbudować część funkcjonalności, aby nasze serwery ożyły, jednak nie jest to wyłączne zastosowanie, jakie możemy nadać temu modułowi.
Prawdziwa moc HTTP jest widoczny, gdy wykorzystujemy Twój obiekt do przetwarzania różnych żądań lub żądanie które mogą pochodzić z naszej aplikacji, dzięki temu możemy przetwarzać dane, które pochodzą z POCZTA poprzez formularze lub prośby klientów ODPOCZYNEK.
Wymagania samouczkaAby wykonać ćwiczenia zaproponowane w tym samouczku, musimy mieć funkcjonalną instalację Node.js w naszym systemie i mieć do niego dostęp. Ważne jest również, aby mieć dostęp do bogatego edytora tekstu do kodowania przykładów, możemy użyć tego, z czym czujemy się komfortowo, jednak ze względu na łatwość obsługi zalecamy Wzniosły tekst lub Notatnik ++ które mają również dodatki do składni JavaScript Tak HTML.
Przetwarzanie danych POCZTA pozwala nam pozyskiwać dane z formularzy, dzięki czemu możemy obsługiwać dane, które pochodzą z interakcji użytkownika z naszymi aplikacjami, co pozwala nam na implementację logiki biznesowej do przetwarzania tych danych.
Najbardziej bezpośredni sposób przetwarzania danych POCZTA to już koniec Obiekt HTTPpoprzez bezpośrednią interakcję z metodą utwórzSerwer () możemy określić rodzaj metody żądania, albo POCZTA lub DOSTWAĆ i nawet UMIEŚCIĆ Tak KASOWAĆ.
Jeśli jesteśmy obserwatorami, widzimy, że to skłania nas do myślenia o naszych aplikacjach Spokojny, czyli możemy komunikować się z nim przez różnych klientów i niekoniecznie za pomocą formularzy HTMLJest to jednak temat wykraczający poza ten samouczek.
Pierwszą rzeczą, którą zrobimy, jest utworzenie małego formularza, który pozwoli nam przechwycić dane naszej aplikacji w przeglądarce, w tym celu stworzymy plik o nazwie formularz.html w katalogu lub folderze naszej aplikacji.
Ten ostatni nie jest zalecany w środowisku produkcyjnym, więc potraktujemy go tylko jako odniesienie, aby móc zademonstrować, jak działa system. Obiekt HTTP. Kod naszego formularza będzie wyglądał następująco:


Jak widać, po prostu wskazujemy naszemu formularzowi, że musi użyć metody POCZTA, mamy kilka pól tekstowych, a na końcu przycisk Zatwierdź w celu przesłania naszych danych na serwer.
Teraz musimy stworzyć serwer Node.js które pomogą nam zebrać dane z formularza, tutaj musimy wziąć pod uwagę dwie możliwości, pierwsza to kiedy uzyskamy dostęp do ścieżki naszej aplikacji, będzie to przy użyciu metody DOSTWAĆ i tutaj powinniśmy pokazać naszą formę.
Drugą możliwością jest wysłanie danych z formularza i w tym celu musimy zweryfikować metodę POCZTA co jest celem ćwiczenia. Abyśmy mogli wyświetlić formularz, musimy stworzyć synchroniczny komponent, który odczytuje nasz plik formularz.html i podawać go w odpowiedniej trasie, w tym celu możemy polegać na metodzie readFileSync modułu fs.
W dalszej części musimy sprawić, by nasz serwer mógł obsłużyć dane POCZTA, w tym celu po prostu pokażemy, co otrzymamy w konsoli metodą konsola.log (), w ten sposób możemy potwierdzić, że wszystko działa poprawnie, zobaczmy początkowy kod, aby osiągnąć to, czego chcemy:
 var http = require ('http'); var querystring = require ('querystring'); var util = require ('util'); var form = require ('fs'). readFileSync ('form.html'); http .createServer (function (request, response) {if (request.method === "POST") {var dataPost = ''; request.on ('data', function (fragment) {dataPost + = chunk;}). on ('end', function () {var dataPostObject = querystring.parse (dataPost); console.log ('Dane wysłane przez użytkownika: \ n', dataPost); response.end ('Wysłałeś dane: \ n '+ util.inspect (dataPostObject));});} if (request.method === "GET") {response.writeHead (200, {' Content-Type ':' text / html '}); odpowiedź. end ( formularz);}}). słuchaj (8082);
Aby wszystko było jak najbardziej czytelne, dodatkowo wbudowano moduły ciąg zapytania Tak Użyteczne, za ich pomocą możemy przetwarzać informacje, które pochodzą z serwera, a tym samym być w stanie manipulować nimi, aby je wydrukować.
Zobaczmy, jak początkowo powinien wyglądać nasz formularz, gdy uruchamiamy naszą aplikację i otwieramy przeglądarkę w ścieżce głównej projektu:

POWIĘKSZAĆ

Wprowadzimy teraz jakieś dane w polach tekstowych, które widzimy w naszym formularzu i klikniemy przycisk wyślij, to wyświetli nam ekran z przesłanymi danymi i wydrukuje nam konsolę. wniosek zwykły, czyli tak jak odbiera nasza aplikacja:

Widzieliśmy wtedy, że bardzo łatwo jest przetworzyć dane formularza, a przynajmniej pokazać je ponownie.
Chociaż poprzedni przykład działa poprawnie, ma pewne słabości, że jeśli aplikacja wejdzie do produkcji, może sprawić nam więcej bólu głowy, na przykład co się stanie, jeśli wyśle ​​nam więcej danych, niż jest w stanie obsłużyć pamięć naszego serwera, oczywiście nasz cała konstrukcja by się zawaliła. Jeśli otrzymamy dane od POCZTA pusta, w obecnym stanie naszej aplikacji ulegnie awarii i otrzymalibyśmy błąd, który spowodowałby awarię naszej usługi i przestanie działać.
Aby naprawić te defekty, musimy po prostu wprowadzić kilka bardzo prostych walidacji, przede wszystkim zamierzamy włączyć zmienną, która pomoże nam ograniczyć otrzymywane dane do maksimum 2 MBTo może dać nam trochę bezpieczeństwa, że ​​przynajmniej przy kilku użytkownikach nie będzie możliwe awaria systemu. Następnie ocenimy to, aby nasza prośba POCZTA być przetwarzane w dniu Obiekt HTTP zawierający go nie może być pusty, dzięki czemu zapewniamy, że nie ma bezpośrednich awarii na naszym serwerze. Spójrzmy na powyższy kod z odpowiednimi modyfikacjami:
 var http = require ('http'); var querystring = require ('querystring'); var util = require ('util'); var form = require ('fs'). readFileSync ('form.html'); var maxDane = 2 * 1024 * 1024; http.createServer (function (request, response) {if (request.method === "POST") {var dataPost = ''; request.on ('data', function (fragment) {dataPost + = chunk; if ( dataPost.length> maxData) {dataPost = ''; this.destroy (); response.writeHead (413); response.end ('Wprowadzone dane przekraczają nasze możliwości');}}).on ('end', funkcja () {if (! PostData) {response.end (); return;} var ObjectPostData = querystring.parse (PostData); console.log ('Użytkownik wysłał dane: \ n', PostData); response.end ( 'Wysłałeś dane: \ n' + util.inspect (datosPostObjeto));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': ' text / html '});respons.end (formularz);}}).słuchaj (8082);
Jeśli otrzymamy dane większe niż 2 MB, po prostu piszemy nagłówek HTTP 413 do wskazania sprawy i niezwłocznie niszczymy otrzymane dane, aby niepotrzebnie nie obciążać naszego serwera.
W przypadku, gdy otrzymamy puste dane z POCZTA, po prostu kontynuujemy naszą egzekucję, aby usługa nie umarła nieoczekiwanie.
Kolejne zastosowanie, jakie możemy nadać metodzie POCZTA z HTTP jest możliwość odbierania plików, do tego musimy zainstalować uzupełnienie w naszym systemie i jest to potężny pakiet, aby osiągnąć ten cel w konsoli Node.js wykonamy następujący kod:
 npm zainstaluj groź[email protected]
Powinno to wyglądać następująco:

W kolejnym akcie zamierzamy zmodyfikować nasze formularz.html z następującym kodem:


Zasadniczo zmieniliśmy nagłówek formularza, aby nasz serwer wiedział, że otrzyma coś więcej niż tylko tekst, a także zmieniliśmy pola tekstowe na pliki. Na koniec zamierzamy zmodyfikować nasz plik serwer.js i umieścimy następujący kod:
 var http = require ('http'); var formidable = require ('formidable'); var form = require ('fs'). readFileSync ('form.html'); http.createServer (function (żądanie, odpowiedź) { if (request.method === "POST") {var initial = new formidable.IncomingForm (); nadchodzący.uploadDir = 'files'; initial.on ('plik', funkcja (pole, plik) {if (! plik .size) {return;} response.write (nazwa.pliku + 'otrzymano\n');}).on ('end', function () {response.end ('Wszystkie pliki zostały odebrane');}); Initial.parse (request);} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response.end (formularz); } }) słuchaj (8082);
Widzimy, jak moduł potężny jest tym, który pomaga nam przetwarzać przesyłanie plików, to będzie je przechowywać w folderze o nazwie dokumentacja, do którego, aby folder docelowy działał, musi mieć uprawnienia do zapisu Node.js.
Na tym ostatnim zakończyliśmy nasz samouczek, ponieważ widzieliśmy, że mamy wiele opcji, za pomocą których możemy przetwarzać żądania POCZTA używanie obiektu HTTP na naszym serwerze Node.js, oprócz wszystkich zalet, które dodaje do naszych rozwiązań.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave