Използване на HTTP обекта в Node.js

Съдържание
The HTTP модул в нашите приложения, написани на Node.js Те ни помагат да изградим част от функционалността, за да оживеят нашите сървъри, но това не е изключителната употреба, която можем да дадем на този модул.
Истинската сила на HTTP се вижда, когато използваме вашия обект за обработка на различните заявки или заявка които могат да дойдат от нашето приложение, с това можем да обработим данните, които идват от POST чрез формуляри или заявки на клиенти ПОЧИВКА.
Изисквания за уроциЗа да изпълним упражненията, предложени в този урок, трябва да имаме функционална инсталация на Node.js в нашата система и имат разрешения за достъп до нея. Също така е важно да имате достъп до богат текстов редактор, за да кодирате примерите, можем да използваме всичко, с което се чувстваме комфортно, но за неговата лекота на употреба препоръчваме Възвишен текст или NotePad ++ които също имат добавки за синтаксиса JavaScript Y HTML.
Обработка на данни POST ни позволява да получаваме данни от формуляри, с това можем да обработваме данни, които идват от взаимодействието на потребителя с нашите приложения, като по този начин ни позволява да внедрим бизнес логика за обработка на споменатите данни.
Най -директният начин, по който трябва да обработваме данните POST това е през HTTP обект, чрез директно взаимодействие с метода createServer () можем да идентифицираме и типа на метода на заявката POST или ПОЛУЧАВАЙТЕ и дори СЛАГАМ Y ИЗТРИЙ.
Ако сме наблюдатели, виждаме, че това ни кара да мислим по някакъв начин за нашите приложения ПОКОЙНО, тоест можем да общуваме с него чрез различни клиенти и не е задължително с формуляри HTMLТова обаче е тема, която надхвърля този урок.
Първото нещо, което ще направим, е да създадем малка форма, която ще ни позволи да уловим данните от нашето приложение в браузъра, за това ще създадем файл, наречен form.html в директорията или папката на нашето приложение.
Последното не се препоръчва в производствена среда, така че ще го вземем само като ориентир, за да можем да демонстрираме как работи системата. HTTP обект. Кодът на нашата форма ще бъде следният:


Както виждаме, ние просто посочваме на нашата форма, че тя трябва да използва метода POST, имаме няколко текстови полета и накрая бутон Изпращане за изпращане на нашите данни до сървъра.
Сега трябва да създадем сървъра Node.js това ще ни помогне да съберем данните от формуляра, тук трябва да вземем предвид две възможности, първата е, когато имаме достъп до пътя на нашето приложение, това ще бъде с помощта на метода ПОЛУЧАВАЙТЕ и тук трябва да покажем формата си.
Втората възможност е, когато данните от формуляра се изпращат и за това трябва да потвърдим метода POST което е целта на упражнението. За да можем да покажем формата, трябва да създадем синхронен компонент, който чете нашия файл form.html и го обслужваме по съответния маршрут, за това можем да разчитаме на метода readFileSync на модула fs.
В следващата част трябва да накараме нашия сървър да обработва данните POST, за това просто ще покажем какво получаваме в конзолата с метода console.log (), по този начин можем да потвърдим, че всичко работи правилно, нека видим първоначалния код, за да постигнем това, което искаме:
 var http = require ('http'); var querystring = require ('querystring'); var util = require ('util'); var form = require ('fs'). readFileSync ('form.html'); http .createServer (функция (заявка, отговор) {if (request.method === "POST") {var dataPost = ''; request.on ('данни', функция (парче) {dataPost + = парче;}). on ('end', function () {var dataPostObject = querystring.parse (dataPost); console.log ('Данни, изпратени от потребителя: \ n', dataPost); response.end ('Изпратили сте данни: \ n'+ util.inspect (dataPostObject));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response. end ( форма);}}). слушайте (8082);
За да стане всичко възможно най -четливо, модулите бяха допълнително включени querystring Y Полезен, с тях можем да обработим информацията, която идва от сървъра и по този начин да можем да я манипулираме, за да я отпечатаме.
Нека да видим как първоначално трябва да изглежда нашата форма, когато стартираме нашето приложение и отворим браузъра в главния път на проекта:

Увеличете

Сега ще въведем някои данни в текстовите полета, които виждаме във формата ни, и щракнете върху бутона за изпращане, това ще ни покаже екран с изпратените данни и ще ни отпечата конзолата. заявка обикновена, тоест както е получено от нашето приложение:

Тогава видяхме, че е било много лесно да се обработят данните от формуляра, поне да се покажат отново.
Въпреки че предишният пример работи правилно, той има някои слабости, че ако приложението влезе в производство, това може да ни причини повече главоболие, например какво ще се случи, ако ни изпраща повече данни, отколкото паметта на сървъра ни може да поддържа, очевидно нашите цялата структура ще се срути. Ако получаваме данни от POST празно, в текущото състояние на нашето приложение то ще се провали и ще получим грешка, която ще доведе до срив на нашата услуга и ще спре да работи.
За да коригираме тези дефекти, просто трябва да включим някои много прости валидации, на първо място ще включим променлива, която ще ни помогне да ограничим получените данни до максимум 2 MBТова може да ни даде малко сигурност, че поне при няколко потребители няма да е възможно системата да се срине. След това ще оценим това, така че нашата молба POST да бъдат обработени на HTTP обект съдържащият го не може да бъде празен, като по този начин гарантираме, че няма директни повреди в нашия сървър. Нека разгледаме кода по -горе със съответните модификации:
 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 (функция (заявка, отговор) {if (request.method === "POST") {var dataPost = ''; request.on ('данни', функция (парче) {dataPost + = парче; ако ( dataPost.length> maxData) {dataPost = ''; this.destroy (); response.writeHead (413); response.end ('Въведените данни надвишават капацитета ни');}}). on ('end', функция () {if (! PostData) {response.end (); return;} var ObjectPostData = querystring.parse (PostData); console.log ('Потребителят изпрати данните: \ n', PostData); response.end ( 'Изпратили сте данните: \ n' + util.inspect (datosPostObjeto));});} if (request.method === "GET") {response.writeHead (200, {'Content-Type': ' text / html '}); response.end (form);}}). listen (8082);
Ако получаваме данни, по -големи от 2 MB, просто записваме заглавка HTTP 413 за да посочим случая и незабавно унищожаваме получените данни, за да не задържим натоварването на нашия сървър излишно.
В случай, че получим празни данни от POST, ние просто продължаваме изпълнението си, предотвратявайки неочакваното умиране на услугата.
Друга употреба, която можем да дадем на метода POST на HTTP е да можем да получаваме файлове, за това трябва да инсталираме допълнение в нашата система и това е страхотният пакет, за да постигнем тази цел в конзолата Node.js ще изпълним следния код:
 npm инсталирайте [email protected]
Това трябва да бъде както следва:

Следващото действие ще променим нашето form.html със следния код:


По принцип това, което направихме, беше да променим заглавката на формуляра, така че нашият сървър да знае, че ще получава нещо повече от просто текст, а също така променихме текстовите полета във файлове. Накрая ще променим нашия файл server.js и ще поставим следния код:
 var http = require ('http'); var formidable = require ('внушително'); var form = require ('fs'). readFileSync ('form.html'); http.createServer (функция (заявка, отговор) { if (request.method === "POST") {var incoming = new formidable.IncomingForm (); incoming.uploadDir = 'files'; incoming.on ('file', function (field, file) {if (! file .size) {return;} response.write (file.name + 'Получено \ n');}). on ('end', function () {response.end ('Всички файлове са получени');}); incoming.parse (заявка);} if (request.method === "GET") {response.writeHead (200, {'Content-Type': 'text / html'}); response.end (формуляр);} }). слушане (8082);
Виждаме как модулът страховит е този, който ни помага да обработим качването на файлове, това ще ги съхранява в папка, наречена записи, които за да работи целевата папка трябва да имат разрешение за запис Node.js.
С това последно завършихме нашия урок, тъй като видяхме, че имаме множество опции, с които можем да обработваме заявките POST използване на обекта HTTP на нашия сървър Node.js, в допълнение към всички предимства, които добавя към нашите разработки.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave