Kā izveidot HTTP pieprasījumus pakalpojumā Node.js, izmantojot mezgla ienesi

Ka Izveidot Http Pieprasijumus Pakalpojuma Node Js Izmantojot Mezgla Ienesi



HTTP pieprasījumi ir ļoti svarīgi, un tie tiek veikti, lai globāli iegūtu informāciju no vietrāžiem URL, t.i., izsaucot vietni utt. Šī pieeja stājas spēkā, kad tīmekļa lietojumprogrammai ir jāizveido saziņa ar tīmekļa serveriem, lai piekļūtu resursiem. Piemēram, izgūstot vai ievietojot datus tīmekļa serverī vai API.

JavaScript to var veikt, izmantojot ' window.fetch() ” metode. Tomēr “ node.js ”, šo funkcionalitāti var sasniegt, izmantojot vairākas pakotnes, t.i., mezgla ielāde utt.

Šajā emuārā ir izskaidrotas šādas satura jomas:







Kas ir “mezgla ielāde”?

' node-fetch ” atbilst vieglajam modulim, kas padara ielādes API pieejamu node.js. Šis modulis arī ļauj lietotājiem izmantot ' atnest() ' metode node.js, kas lielākoties ir līdzīga JavaScript ' window.fetch() ” metode.



Sintakse(ieneses() metode)



atnest ( url [ , opcijas ] ) ;

Šajā sintaksē:





  • ' url ” attiecas uz resursa URL, kas jāielādē/izgūst.
  • ' iespējas parametrs ir nepieciešams, ja ir nepieciešams izmantot metodi “fetch()”, nevis izveidot “ GŪT ” pieprasījums.

Atdeves vērtība

Šī funkcija izgūst atbildes objektu, kas satur informāciju par HTTP atbildi šādi:



  • teksts: Izgūst atbildes pamattekstu virknes formā.
  • galvenes: Atgriež objektu, kas ietver atbilžu apstrādātājus.
  • json (): Parsē atbildes pamattekstu JSON objektā.
  • statusteksts/statuss: Ietver informāciju par HTTP statusa kodu.
  • labi: Dod ' taisnība ” ja statuss ir 2xx statusa kods.

Node-fetch izmantošanas priekšnoteikumi

Šie ir priekšnoteikumi, kas jāņem vērā, pirms sākat ar ' node-fetch ”:

  • Instalēta vismaz vai jaunākā par 17.5 versiju.
  • Pamatzināšanas par JavaScript.

Kā veikt HTTP pieprasījumus failā node.js, izmantojot node-fetch?

HTTP pieprasījumu veikšana ir asinhrona procedūra, jo pieprasītās atbildes saņemšana aizņem kādu laiku. Tas ir tāds, ka asinhrono procedūru izmantošanai var būt divas metodoloģijas. Pirmais ir tas, ka lietotājs var gaidīt atbildi un pēc tam atsākt ar kodu. Otrs paralēli izpilda kodu.

Kā sākt ar mezgla iegūšanu?

Pirms sākat vai instalējat ' node-fetch ” moduli, inicializējiet mezgla projektu, izmantojot tālāk norādīto komandu:

npm init - un

Izpildot šo komandu, tiek izveidots ' pack.json ” failu pašreizējā direktorijā, šādi:

Tagad instalējiet ' node-fetch ” moduli, izmantojot šādu cmdlet:

npm instalēšanas mezgls - atnest

Tomēr, lai instalētu mērķa moduļa versiju, izmantojiet šādu komandu:

npm instalēšanas mezgls - atnest@ 2.0

Šajā gadījumā “ 2.0 ” moduļa versija tiks instalēta.

Piezīme: Pirms turpināt ar piemēriem, izveidojiet ' index.mjs ” failu darbvietā, kas tiks izmantota funkcionalitātes lietošanai.

1. piemērs: Nosūtiet saņemšanas pieprasījumus, izmantojot mezgla ienesi

' node-fetch ” moduli var izmantot, lai iegūtu tekstu no tīmekļa servera vai datus, izmantojot Rest API.

Zemāk redzamais koda piemērs, kas rakstīts izveidotajā ' index.mjs ” fails nodrošina vienkāršu Get pieprasījumu YouTube sākumlapai:

imports atnest no 'node-fetch' ;

atnest ( “https://youtube.com” )

. tad ( res => res. tekstu ( ) )

. tad ( tekstu => konsole. žurnāls ( tekstu ) ) ;

Šajās koda rindās:

  • Ielādēt ' node-fetch ” moduli un izgūt YouTube sākumlapu, izmantojot norādīto URL, uz kuru tiek veikts HTTP pieprasījums.
  • Pēc tam pievienojiet ķēdi “ tad () ” metodes, kā apstrādāt atbildi un datus no veiktā pieprasījuma.
  • Iepriekšējā metode “then()” norāda uz gaidīšanu, lai saņemtu atbildi no YouTube servera un pārveidotu to teksta formātā.
  • Pēdējā metode “then()” nozīmē iepriekšējās transformācijas iznākuma gaidīšanu un parāda to konsolē.

Izvade

Tagad izpildiet kodu, izmantojot šādu cmdlet:

mezglu indekss. mjs

Iepriekš minētās komandas izpildes rezultātā tiek izgūts viss konsolē parādītās YouTube sākumlapas HTML atzīme:

2. piemērs: Izgūt JSON datus no Rest API

Šajā piemērā tiek izmantots ' node-fetch ”, lai iegūtu viltotus datus, izmantojot JSONPlaceholder RestAPI. Tas ir tā, ka ' atnest() ” metode ietver servera URL un gaida atbildi:

imports atnest no 'node-fetch' ;

atnest ( “https://jsonplaceholder.typicode.com/users” )

. tad ( res => res. json ( ) )

. tad ( json => {

konsole. žurnāls ( 'Pirmais masīva lietotājs ->' ) ;

konsole. žurnāls ( json [ 0 ] ) ;

konsole. žurnāls ( 'Pirmā masīva lietotājvārds ->' ) ;

konsole. žurnāls ( json [ 0 ] . nosaukums ) ;

} )

Saskaņā ar šo koda bloku veiciet šādas darbības:

  • HTTPS pamattekstā ir JSON formatēti dati ar lietotāja datiem.
  • Pēc tam ' json() ” funkcija tiek lietota, lai izsauktu atsevišķus ierakstus un atbilstošās vērtības.

Izvade

Lietojiet tālāk norādīto cmdlet, lai izpildītu kodu:

mezglu indekss. mjs

3. piemērs: izlikšanas pieprasījumi, izmantojot node-fetch

' node-fetch ” moduli var izmantot arī, lai publicētu pieprasījumus, nevis tos izgūtu. To var panākt, izmantojot ' atnest() ” metode, kas ietver papildu parametru, lai veiktu POST pieprasījumus serverim.

Ar šo parametru var piešķirt vairākas iespējas. Tomēr šajā gadījumā “ metodi ',' ķermeni ' un ' galvenes ' tiks izmantots. Tālāk ir sniegts katras opcijas apraksts:

  • ' metodi Opcija iestata HTTP pieprasījumu veidu, t.i., “POST” šajā scenārijā.
  • ' ķermeni ” opcija ietver pieprasījuma pamattekstu.
  • ' galvene ' opcija satur visas nepieciešamās galvenes, t.i., ' Satura veids ”Šajā scenārijā.

Tagad pārejiet uz ziņu pieprasījumu nosūtīšanas praktisko ieviešanu, pievienojot jaunu vienumu JSON viettura ' visi ”. To veic, sarakstam pievienojot jaunu vienumu, kura lietotāja ID ir “476”:

imports atnest no 'node-fetch' ;

ļauj visam = {

Lietotāja ID : 476 ,

vietne : 'Tas ir Linuxhint' ,

pabeigts : viltus

} ;

atnest ( “https://jsonplaceholder.typicode.com/todos” , {

metodi : 'POST' ,

ķermeni : JSON. nospriegot ( visi ) ,

galvenes : { 'Satura veids' : 'aplikācija/json' }

} ) . tad ( res => res. json ( ) )

. tad ( json => konsole. žurnāls ( json ) ) ;

Šajā kodā:

  • Vispirms izveidojiet uzdevumu objektu un pārveidojiet to par JSON, vienlaikus pievienojot to pamattekstam.
  • Tagad tāpat norādiet URL ar nepieciešamajām opcijām kā ' atnest() ” metodes izvēles parametri.
  • Pēc tam izmantojiet ' JSON.stringify() ” metodi, lai pārveidotu objektu par formatētu (JSON) virkni pirms tā nosūtīšanas/pārsūtīšanas uz tīmekļa serveri.
  • Virzoties uz priekšu, īstenojiet apvienoto tad () ” metodes, lai izgūtu datus, gaidot atbildi, pārveidojot tos uz JSON un attiecīgi reģistrējoties konsolē.

Izvade

Lai izpildītu kodu, izpildiet tālāk norādīto komandu:

mezglu indekss. mjs

Kas ir HTTP statusa kodi?

Pirms turpināt pie nākamā piemēra, pārliecinieties, vai, ja atbilde ietver “ 3xx ” statusa kods, papildu darbības jāveic klientam. Tāpat “ 4xx ' kodi apzīmē nederīgu pieprasījumu un ' 5xx ” kodi atbilst servera kļūdām.

Piezīme: ' noķert () ” funkcija nevar tikt galā ar iepriekš apspriestajiem gadījumiem, jo ​​servera komunikācija notiek racionalizētā veidā. Tāpēc efektīva pieeja, lai nodrošinātu, ka neveiksmīgie pieprasījumi atgriež kļūdu, ir definēt funkciju, kas analizē servera atbildes HTTP statusu.

4. piemērs: Izņēmumu un ierobežojumu pārvarēšana

Nosūtītajiem pieprasījumiem var būt vairāki ierobežojumi vai izņēmumi, t.i., problēmas ar internetu, ' atnest() ” funkciju ierobežojumi utt. Šos izņēmumus var apstrādāt, pievienojot “ noķert () ” funkcija:

funkciju analīzeStatuss ( x ) {

ja ( x. labi ) {

atgriezties x

} cits {

mest jauns Kļūda ( HTTP statuss attiecībā uz atbildi -> $ { x. statusu } ( $ { x. statusTeksts } ) ` ) ;

}

}

atnest ( “https://jsonplaceholder.typicode.com/MissingResource” )

. tad ( analizētStatuss )

. tad ( x => x. json ( ) )

. tad ( json => konsole. žurnāls ( json ) )

. noķert ( kļūda => konsole. žurnāls ( kļūda ) ) ;

Šajā koda fragmentā:

  • Pirmkārt, pirms atbildes parsēšanas definējiet funkciju ar norādīto parametru, lai tiktu galā ar ierobežojumiem.
  • Tagad iekļaujiet ' ja/citādi ” paziņojumus, lai izmestu radušos kļūdu vai pielāgotu ierobežojumu.
  • Pēc tam līdzīgi piemērojiet “ atnest() ” metodi un ar to saistītās “then()” metodes, lai izgūtu datus, gaidot atbildi, pārveidojot tos uz JSON un piesakoties konsolē.
  • Visbeidzot, izpildlaika izņēmumus var novērst, ievietojot “ noķert () ” metode solījumu ķēdes galā.

Izvade

Visbeidzot, palaidiet tālāk norādīto cmdlet, lai palaistu kodu un izmestu izņēmumus:

mezglu indekss. mjs

Citi “mezgla ielādes” lietošanas gadījumi

' node-fetch 'var izmantot arī, lai izveidotu' API pieprasījumi ” vai “ Tīmekļa skrāpēšana ”. Sīkāk apspriedīsim šos lietošanas gadījumus.

Mezgla ielādes izmantošana API pieprasījumu veikšanai

API var būt nepieciešama vairākos scenārijos, lai iegūtu mērķa datus, izmantojot aizmugures avotu. HTTP pieprasījumiem var būt vairākas autentifikācijas metodes, piemēram, API atslēgas izmantošana, kur API nodrošinātājs nodrošina atslēgu, kas ir ierobežota tikai lietotājam. Vēl viena pieeja API aizsardzībai var būt, izmantojot “ Pamata autentifikācija ”, kurā ir jānosūta galvene, lai izsauktu API.

Tālāk ir parādīta pēdējā pieeja, t.i., “Pamata autentifikācija” pēc pieprasījuma, izmantojot “ atnest() ” metode:

( asinhrons ( ) => {

konst x = gaidi atnesi ( “http://httpbin.org/post” , {

metodi : 'POST' ,

galvenes : {

'Autorizācija' : `Pamata $ { Brāl ( 'pieslēgšanās parole' ) } `

} ,

ķermeni : JSON. nospriegot ( {

'atslēga' : 'vērtība'

} )

} ) ;

konst rezultāts = gaidi x. tekstu ( ) ;

konsole. žurnāls ( rezultāts ) ;

} ) ( ) ;

Iepriekš minētajā demonstrācijā galvene tiek nosūtīta ar ' bāze64 'kodēta virkne formātā' pieslēgšanās parole ”.

Mezgla ielādes izmantošana tīmekļa skrāpēšanai

' Tīmekļa skrāpēšana ” attiecas uz paņēmienu, kādā dati/saturs tiek izgūts no vietnēm un parsēts. Šī parsēšana tiek panākta, izmantojot cheerio ” bibliotēka.

Tālāk ir parādīts, kā tiek ielādēts lapas nosaukums, izmantojot atnest() ' metode un ' cheerio ” bibliotēka:

konst lib = pieprasīt ( 'uzmundrināt' ) ;

( asinhronā ( ) => {

konst x = gaidi atnesi ( “https://linuxhint.com/” ) ;

konst un = gaidi x. tekstu ( ) ;

konst $ = lib. slodze ( un ) ;

konsole. žurnāls ( $ ( 'nosaukums' ) . vispirms ( ) . tekstu ( ) ) ;

} ) ( ) ;

Šis piemērs izgūst elementu ' Linux ' vietnes nosaukums.

Secinājums

HTTP pieprasījumus node.js var veikt, izmantojot mezgla ienesi, nosūtot saņemšanas pieprasījumus, izgūstot JSON datus no REST API vai nosūtot ziņu pieprasījumus. Arī izņēmumus un ierobežojumus var efektīvi apstrādāt, izmantojot noķert () ” funkcija.