Преглед садржаја
Тхе ХТТП модул у оквиру наших апликација написаних на Ноде.јс Они нам помажу да изградимо део функционалности како би наши сервери заживели, међутим ово није искључива употреба коју можемо дати овом модулу.Истинска моћ ХТТП се види када користимо ваш објекат за обраду различитих захтева или захтев који могу доћи из наше апликације, са овим можемо обрадити податке који долазе из ПОШТА путем образаца или захтева купаца РЕСТ.
Туторски захтевиЗа извођење вежби предложених у овом водичу морамо имати функционалну инсталацију Ноде.јс у нашем систему и имају дозволе за приступ. Такође је важно да имате приступ уређивачу обогаћеног текста за кодирање примера, можемо да користимо све што нам одговара, међутим, због једноставности употребе, препоручујемо Узвишени текст или НотеПад ++ који такође имају додатке за синтаксу ЈаваСцрипт И ХТМЛ.
Обрада података ПОШТА омогућава нам да прикупљамо податке из образаца, са овим можемо да рукујемо подацима који потичу од интеракције корисника са нашим апликацијама, омогућавајући нам тако да применимо пословну логику за обраду наведених података.
Најдиректнији начин на који морамо обрадити податке ПОШТА то је кроз ХТТП објекат, кроз директну интеракцију са методом цреатеСервер () можемо идентификовати и врсту метода захтева ПОШТА или ДОБИТИ и чак СТАВИТИ И ДЕЛЕТЕ.
Ако смо посматрачи, видимо да нас то на неки начин тера да размислимо о својим апликацијама ОДМОРНО, односно можемо комуницирати са њим преко различитих клијената и не нужно путем образаца ХТМЛМеђутим, то је тема која надилази овај водич.
Прва ствар коју ћемо урадити је да направимо мали образац који ће нам омогућити да снимимо податке наше апликације у прегледачу, за то ћемо направити датотеку под називом форм.хтмл у директоријуму или фасцикли наше апликације.
Ово последње се не препоручује у производном окружењу, па ћемо га узети само као референцу да бисмо могли показати како систем функционише. ХТТП објекат. Код нашег обрасца ће бити следећи:
Као што видимо, једноставно указујемо свом обрасцу да мора користити методу ПОШТА, имамо неколико текстуалних поља и на крају дугме прихвати да шаљемо наше податке на сервер.
Сада морамо креирати сервер Ноде.јс то ће нам помоћи да прикупимо податке из обрасца, овде морамо узети у обзир две могућности, прва је када приступимо путањи наше апликације, ово ће бити коришћење методе ДОБИТИ и ту треба да покажемо своју форму.
Друга могућност је када се шаљу подаци обрасца и за то морамо потврдити методу ПОШТА што је циљ вежбе. Да бисмо могли приказати образац, морамо створити синхрону компоненту која чита нашу датотеку форм.хтмл и послужите га на одговарајућој рути, за то се можемо ослонити на методу реадФилеСинц модула фс.
У следећем делу морамо да учинимо да наш сервер може да обрађује податке ПОШТА, за ово ћемо једноставно показати шта добијамо у конзоли са овом методом цонсоле.лог (), на овај начин можемо потврдити да све ради исправно, погледајмо почетни код да бисмо постигли оно што желимо:
вар хттп = рекуире ('хттп'); вар куеристринг = рекуире ('куеристринг'); вар утил = рекуире ('утил'); вар форм = рекуире ('фс'). реадФилеСинц ('форм.хтмл'); хттп .цреатеСервер (фунцтион (рекуест, респонсе) {иф (рекуест.метход === "ПОСТ") {вар датаПост = ''; рекуест.он ('дата', функција (комад) {датаПост + = комад;}). он ('енд', фунцтион () {вар датаПостОбјецт = куеристринг.парсе (датаПост); цонсоле.лог ('Подаци послани од корисника: \ н', датаПост); респонсе.енд ('Послали сте податке: \ н'+ утил.инспецт (датаПостОбјецт));});} иф (рекуест.метход === "ГЕТ") {респонсе.вритеХеад (200, {'Цонтент-Типе': 'тект / хтмл'}); респонсе. енд ( форм);}}). листен (8082);Да би све било што читљивије, модули су додатно уграђени низ упита И Корисно, помоћу њих можемо обрадити информације које долазе са сервера и на тај начин моћи да манипулишемо да их одштампамо.
Хајде да видимо како би наш образац у почетку требало да изгледа када покренемо апликацију и отворимо прегледач на основној путањи пројекта:
ЕНЛАРГЕ
Сада ћемо унети неке податке у текстуална поља која видимо у нашем обрасцу и кликнути на дугме за слање, ово ће нам приказати екран са послатим подацима и штампаће нам конзолу. захтев обичан, то јест, онако како је примљено нашом апликацијом:Тада смо видели да је било веома лако обрадити податке обрасца, барем да их поново прикажемо.
Иако претходни примјер исправно ради, има неке слабости да би, ако би апликација кренула у продукцију, могло бити узроковано више главобоље, на примјер, шта се дешава ако нам шаље више података него што меморија нашег сервера може подржати, очигледно цела структура би се срушила. Ако податке примамо из ПОШТА празна, у тренутном стању наше апликације она би пропала и добили бисмо грешку због које би се наша услуга срушила и престала да ради.
Да бисмо исправили ове недостатке, једноставно морамо да уградимо неке врло једноставне провере, пре свега ћемо уградити променљиву која ће нам помоћи да ограничимо примљене податке на највише 2 МБОво нам може дати мало сигурности да барем са неколико корисника неће бити могуће да се систем сруши. Онда ћемо то проценити тако да наш захтев ПОШТА бити обрађен на ХТТП објекат оно што га садржи не може бити празно, стога осигуравамо да нема директних кварова на нашем серверу. Погледајмо горњи код са одговарајућим изменама:
вар хттп = рекуире ('хттп'); вар куеристринг = рекуире ('куеристринг'); вар утил = рекуире ('утил'); вар форм = рекуире ('фс'). реадФилеСинц ('форм.хтмл'); вар макДата = 2 * 1024 * 1024; хттп.цреатеСервер (функција (захтев, одговор) {иф (рекуест.метход === "ПОСТ") {вар датаПост = ''; рекуест.он ('подаци', функција (комад) {датаПост + = комад; иф ( датаПост.ленгтх> макДата) {датаПост = ''; тхис.дестрои (); респонсе.вритеХеад (413); респонсе.енд ('Унесени подаци премашују наше капацитете');}}). он ('енд', функција () {иф (! ПостДата) {респонсе.енд (); ретурн;} вар ОбјецтПостДата = куеристринг.парсе (ПостДата); цонсоле.лог ('Корисник је послао податке: \ н', ПостДата); респонсе.енд ( 'Послали сте податке: \ н' + утил.инспецт (датосПостОбјето));});} иф (рекуест.метход === "ГЕТ") {респонсе.вритеХеад (200, {'Цонтент-Типе': ' тект / хтмл '}); респонсе.енд (форм);}}). листен (8082);Ако примамо податке веће од 2 МБ, једноставно записујемо заглавље ХТТП 413 да укажемо на случај и одмах уништавамо примљене податке како не бисмо непотребно задржали оптерећење на нашем серверу.
У случају да добијемо празне податке од ПОШТА, једноставно настављамо са извршавањем спречавајући услугу да неочекивано умре.
Још једна употреба коју можемо дати методи ПОШТА оф ХТТП Да бисмо могли да примамо датотеке, за то морамо инсталирати допуну у наш систем и то је страшан пакет, да бисмо постигли овај циљ у конзоли Ноде.јс извршићемо следећи код:
нпм инсталл формидабле@1.к.кОво би требало да буде следеће:
Следећи чин ћемо изменити форм.хтмл са следећим кодом:
У основи смо изменили заглавље обрасца тако да наш сервер зна да ће примити нешто више од текста, а текстуална поља смо такође променили у датотеке. На крају ћемо изменити нашу датотеку сервер.јс и поставићемо следећи код:
вар хттп = рекуире ('хттп'); вар формидабле = рекуире ('формидабле'); вар форм = рекуире ('фс'). реадФилеСинц ('форм.хтмл'); хттп.цреатеСервер (функција (захтев, одговор) { иф (рекуест.метход === "ПОСТ") {вар инцоминг = нев формидабле.ИнцомингФорм (); инцоминг.уплоадДир = 'филес'; инцоминг.он ('филе', фунцтион (фиелд, филе) {иф (! филе .сизе) {ретурн;} респонсе.врите (име фајла + 'примљено \ н');}). он ('крај', функција () {респонсе.енд ('Све датотеке су примљене');}); инцоминг.парсе (рекуест);} иф (рекуест.метход === "ГЕТ") {респонсе.вритеХеад (200, {'Цонтент-Типе': 'тект / хтмл'}); респонсе.енд (форм);} }). слушај (8082);Видимо како модул страшан је тај који нам помаже да обрадимо отпремање датотека, ово ће их сачувати у фасцикли тзв записи, које за рад одредишне фасцикле морају имати дозволу за писање Ноде.јс.
Овим последњим смо завршили наш водич, јер смо видели да имамо више опција помоћу којих можемо обрадити захтеве ПОШТА помоћу објекта ХТТП на нашем серверу Ноде.јс, поред свих предности које додаје нашем развоју.