Како направити ХТТП захтеве у Ноде.јс помоћу ноде-фетцх-а

Kako Napraviti Http Zahteve U Node Js Pomocu Node Fetch A



ХТТП захтеви су кључни и направљени су за преузимање информација са УРЛ-ова на глобалном нивоу, тј. позивање веб локације, итд. Овај приступ ступа на снагу када веб апликација треба да успостави комуникацију са веб серверима да би приступила ресурсима. На пример, преузимање или постављање података на веб сервер или АПИ.

У ЈаваСцрипт-у, то се може извршити преко „ виндов.фетцх() ” метод. Међутим, у „ ноде.јс “, ова функционалност се може постићи коришћењем више пакета, тј. дохваћање чвора, итд.

Овај блог објашњава следеће области садржаја:







Шта је „дохваћање чвора“?

ноде-фетцх ” одговара лаганом модулу који чини АПИ за преузимање доступним за ноде.јс. Овај модул такође омогућава корисницима да користе „ дохвати() ” метод у ноде.јс који је углавном сличан ЈаваСцрипт-у “ виндов.фетцх() ” метод.



Синтакса(метод дохвати())



донети ( урл [ , Опције ] ) ;

У овој синтакси:





  • урл ” се односи на УРЛ ресурса који треба преузети/преузети.
  • Опције ” параметар је потребан када постоји потреба да се користи метод „фетцх()” осим прављења „ ДОБИТИ ' захтев.

Повратна вредност

Ова функција преузима објекат Респонсе који садржи информације у вези са ХТТП одговором на следећи начин:



  • текст: Преузима тело одговора у облику низа.
  • заглавља: Враћа објекат који садржи обрађиваче одговора.
  • јсон(): Рашчлањује тело одговора у ЈСОН објекту.
  • текст статуса/статус: Садржи информације у вези са ХТТП статусним кодом.
  • У реду: Даје ' истина ” ако је статус статусни код 2кк.

Предуслови за коришћење ноде-фетцх-а

Следеће су предуслови које треба размотрити пре него што почнете са „ ноде-фетцх ”:

  • Инсталирано најмање или најновије од верзије 17.5.
  • Основно познавање ЈаваСцрипт-а.

Како направити ХТТП захтеве у ноде.јс са ноде-фетцх?

Израда ХТТП захтева је асинхрона процедура јер је за пријем захтеваног одговора потребно неко време. То је такво да могу постојати две методологије за коришћење асинхроних процедура. Први је да корисник може да сачека одговор, а затим да настави са кодом. Други извршава код паралелно.

Како започети са преузимањем чворова?

Пре него што почнете са или инсталирате „ ноде-фетцх ” модул, иницијализујте пројекат чвора уз помоћ доле дате команде:

нпм инит - и

Извршавање ове команде ствара „ пацкаге.јсон ” датотеку у тренутном директоријуму, на следећи начин:

Сада, инсталирајте „ ноде-фетцх ” модул користећи следећи цмдлет:

нпм инсталл чвор - донети

Међутим, да бисте инсталирали верзију циљног модула, користите следећу команду:

нпм инсталл чвор - донеси@ 2.0

У овом случају, „ 2.0 ” верзија модула ће бити инсталирана.

Белешка: Пре него што наставите са примерима, креирајте „ индек.мјс ” у радном простору који ће се користити за примену функционалности.

Пример 1: Пошаљите захтеве за преузимање преко ноде-фетцх

ноде-фетцх ” модул се може користити за добијање текста са веб сервера или података преко Рест АПИ-ја.

Пример кода у наставку написан у креираном „ индек.мјс ” датотека чини једноставан захтев за добијање на ИоуТубе почетној страници:

увоз донети из 'ноде-фетцх' ;

донети ( 'БА75БА6Б80ДД9А217097626443А2Ф76ДБ1962697' )

. онда ( рес => рес. текст ( ) )

. онда ( текст => конзола. Пријава ( текст ) ) ;

У овим редовима кода:

  • Учитајте „ ноде-фетцх ” и преузмите ИоуТубе-ову почетну страницу преко наведеног УРЛ-а на који се шаље ХТТП захтев.
  • Након тога, повежите „ онда() ” методе за руковање одговором и подацима из послатог захтева.
  • Бивши метод „тхен()“ означава чекање да се добије одговор од ИоуТубе сервера и трансформише га у текстуални формат.
  • Последњи „тхен()“ метод означава чекање на исход претходне трансформације и приказује га на конзоли.

Излаз

Сада извршите код преко следеће цмдлет-а:

индекс чвора. мјс

Извршавање горње команде доводи до преузимања целе ХТМЛ ознаке ИоуТубе почетне странице приказане на конзоли:

Пример 2: Преузми ЈСОН податке из Рест АПИ-ја

Овај пример користи „ ноде-фетцх ” да бисте добили лажне податке путем ЈСОНПлацехолдер РестАПИ. Такав је да „ дохвати() ” метода садржи УРЛ адресу сервера и чека одговор:

увоз донети из 'ноде-фетцх' ;

донети ( '9АА5906Ф16Ц5А84А74А3Д40Ф3Б23ААДЕЦ87538Е1' )

. онда ( рес => рес. јсон ( ) )

. онда ( јсон => {

конзола. Пријава ( 'Корисник првог низа -> ' ) ;

конзола. Пријава ( јсон [ 0 ] ) ;

конзола. Пријава ( 'Корисничко име првог низа -> ' ) ;

конзола. Пријава ( јсон [ 0 ] . име ) ;

} )

Према овом блоку кода, извршите следеће кораке:

  • ХТТПС тело садржи ЈСОН форматиране податке који садрже податке корисника.
  • Након тога, „ јсон() ” се примењује функција за позивање појединачних уноса и одговарајућих вредности.

Излаз

Примените доле наведени цмдлет да бисте извршили код:

индекс чвора. мјс

Пример 3: Захтеви за слање преко ноде-фетцх

ноде-фетцх ” се такође може користити за постављање захтева уместо за њихово преузимање. Ово се може постићи путем „ дохвати() ” који укључује додатни параметар за упућивање ПОСТ захтева серверу.

Постоји више опција које се могу доделити овим параметром. Међутим, у овом случају, „ методом ', ' тело ' и ' заглавља ' ће се користити. Следи опис сваке од опција:

  • методом ” опција поставља тип ХТТП захтева, тј. „ПОСТ“ у овом сценарију.
  • тело ” опција садржи тело захтева.
  • заглавље ” опција садржи сва потребна заглавља, тј. Тип садржаја ” у овом сценарију.

Сада пређите на практичну имплементацију слања захтева за објављивање додајући нову ставку у ЈСОН чувар места „ све ”. То се ради додавањем нове ставке на листу која има кориснички ИД као „476“:

увоз донети из 'ноде-фетцх' ;

нека све = {

ИД корисник : 476 ,

сајту : 'Ово је Линукхинт' ,

завршено : лажно

} ;

донети ( '6Ц3Д1Ц8051Б253Ф4Е735Ц481304Ф899399483337' , {

методом : 'ПОШТА' ,

тело : ЈСОН. стрингифи ( све ) ,

заглавља : { 'Тип садржаја' : 'апплицатион/јсон' }

} ) . онда ( рес => рес. јсон ( ) )

. онда ( јсон => конзола. Пријава ( јсон ) ) ;

У овом коду:

  • Пре свега, креирајте тодо објекат и трансформишите га у ЈСОН док га додајете телу.
  • Сада, такође, наведите УРЛ са потребним опцијама као „ дохвати() ” опциони параметри методе.
  • Након тога, примените „ ЈСОН.стрингифи() ” за трансформацију објекта у форматирани (ЈСОН) стринг пре слања/преноса на веб сервер.
  • Идемо даље, имплементирајте комбиновани „ онда() ” за преузимање података чекањем на одговор, трансформисањем у ЈСОН и евидентирањем на конзоли, респективно.

Излаз

Извршите наредбу испод да бисте извршили код:

индекс чвора. мјс

Шта су ХТТП статусни кодови?

Пре него што пређете на следећи пример, проверите да ли одговор садржи „ 3кк ” статусни код, клијент треба да предузме додатне кораке. Исто тако, „ 4кк ” кодови представљају неважећи захтев, а „ 5кк ” кодови одговарају грешкама сервера.

Белешка: улов() ” функција не може да се носи са горе наведеним случајевима пошто се комуникација са сервером одвија на поједностављен начин. Стога је ефикасан приступ да се осигура да неуспели захтеви врате грешку јесте да дефинишете функцију која анализира ХТТП статус одговора сервера.

Пример 4: Суочавање са изузецима и ограничењима

Може постојати неколико ограничења или изузетака са послатим захтевима, тј. проблеми са Интернетом, “ дохвати() ” ограничења функције итд. Ови изузеци се могу решити додавањем „ улов() ” функција:

функција анализаСтатус ( Икс ) {

ако ( Икс. У реду ) {

повратак Икс

} друго {

бацити Нова Грешка ( `ХТТП статус у односу на одговор -> $ { Икс. статус } ( $ { Икс. статусТект } ) ` ) ;

}

}

донети ( '735Ф7792ДФ7ФЦЕ107ФЦ5Б7БЕЦ908906074Б6ЕЦ64' )

. онда ( анализаСтатус )

. онда ( Икс => Икс. јсон ( ) )

. онда ( јсон => конзола. Пријава ( јсон ) )

. улов ( ерр => конзола. Пријава ( ерр ) ) ;

У овом исечку кода:

  • Прво, дефинишите функцију која има наведени параметар пре рашчлањивања одговора да бисте се суочили са ограничењима.
  • Сада укључите „ ако друго ” наредбе за избацивање суочене грешке или прилагођеног ограничења.
  • Након тога, на сличан начин, примените „ дохвати() ” и придружене методе „тхен()” за преузимање података чекањем на одговор, трансформисањем у ЈСОН и пријављивањем на конзолу.
  • На крају, изузеци времена извршавања могу се решити постављањем „ улов() ” метод на крају ланца обећања.

Излаз

На крају, покрените цмдлет испод да бисте покренули код и избацили изузетке:

индекс чвора. мјс

Други случајеви употребе „дохваћања чворова“

ноде-фетцх ” се такође може користити за прављење „ АПИ захтеви ” или “ Веб Сцрапинг ”. Хајде да детаљно размотримо ове случајеве употребе.

Коришћење ноде-фетцх-а за прављење АПИ захтева

АПИ може бити потребан у неколико сценарија за преузимање циљних података преко позадинског извора. ХТТП захтеви могу имати много метода аутентификације, као што је коришћење АПИ кључа где АПИ провајдер обезбеђује кључ који је ограничен само на корисника. Други приступ за заштиту АПИ-ја може бити путем „ Басиц Аутхентицатион ” у којем треба послати заглавље за позивање АПИ-ја.

Следи демонстрација последњег приступа, тј. „Основна аутентикација“ у захтеву за накнадно објављивање уз помоћ „ дохвати() ” метод:

( асинц ( ) => {

конст Икс = чекати дохват ( '2Б2АА1ББ078А45ДА07Ц9ЕД2ЦА9Д2334Д1Ф89704Б' , {

методом : 'ПОШТА' ,

заглавља : {

'Овлашћење' : `Основни $ { брате ( 'логин:пассворд' ) } `

} ,

тело : ЈСОН. стрингифи ( {

'кључ' : 'вредност'

} )

} ) ;

конст резултат = чекати х. текст ( ) ;

конзола. Пријава ( резултат ) ;

} ) ( ) ;

У горњој демонстрацији, заглавље се шаље са „ басе64 ” кодирани стринг формата “ логин:пассворд ”.

Коришћење ноде-фетцх-а за Веб Сцрапинг

Веб Сцрапинг ” се односи на технику којом се подаци/садржај преузимају са сајтова и анализирају. Ово рашчлањивање се постиже помоћу „ цхеерио ” библиотека.

Испод је демонстрација преузимања наслова странице преко „ дохвати() ” метод и “ цхеерио ” библиотека:

конст либ = захтевају ( 'навијати' ) ;

( асинц ( ) => {

конст Икс = чекати дохват ( '48ЕБ735ДДАЦД6466444БЦ1Б257ЕФД98Ц8А2ЦЦ9ЕЕ' ) ;

конст и = чекати х. текст ( ) ;

конст $ = либ. оптерећење ( и ) ;

конзола. Пријава ( $ ( 'титле' ) . први ( ) . текст ( ) ) ;

} ) ( ) ;

Овај пример преузима плочицу „ Линук ” наслов сајта.

Закључак

ХТТП захтеви у ноде.јс се могу направити помоћу ноде-фетцх слањем захтева за добијање, преузимањем ЈСОН података из РЕСТ АПИ-ја или слањем захтева за објављивање. Такође, изузецима и ограничењима се може ефикасно управљати путем „ улов() ” функција.