I JavaScript kan det utføres via ' window.fetch() 'metoden. Imidlertid, i ' node.js ”, kan denne funksjonaliteten oppnås ved å bruke flere pakker, dvs. nodehenting, etc.
Denne bloggen forklarer følgende innholdsområder:
- Hva er 'node-henting'?
- Forutsetninger for bruk av node-henting.
- Hvordan lage HTTP-forespørsler i node.js med node-fetch?
- Hvordan komme i gang med node-henting?
- Send Hent forespørsler via node-henting.
- Hent JSON-data fra Rest API.
- Legg inn forespørsler via nodehenting.
- Hva er HTTP-statuskodene?
- Mestring av unntak og begrensninger.
- Annen bruk Tilfeller av node-henting.
- Konklusjon
Hva er 'node-henting'?
« node-henting ” tilsvarer en lettvektsmodul som gjør hente-API-en tilgjengelig for node.js. Denne modulen lar også brukerne bruke ' hente() ' metode i node.js som stort sett ligner på JavaScript ' window.fetch() 'metoden.
Syntaks(fetch()-metode)
hente ( url [ , alternativer ] ) ;
I denne syntaksen:
- ' url ” refererer til URL-en til ressursen som må hentes/hentes.
- « alternativer parameter er nødvendig når det er behov for å bruke 'fetch()'-metoden annet enn å lage en ' FÅ ' be om.
Returverdi
Denne funksjonen henter et Response-objekt som inneholder informasjon om et HTTP-svar som følger:
- tekst: Henter svarkroppen i form av en streng.
- overskrifter: Returnerer et objekt som består av responsbehandlerne.
- json(): Analyserer svarteksten i et JSON-objekt.
- statustekst/status: Omfatter informasjon om HTTP-statuskoden.
- ok: Gir « ekte ” hvis statusen er en 2xx-statuskode.
Forutsetninger for bruk av node-henting
Følgende er forutsetningene som må vurderes før du starter med ' node-henting ':
- Installert minst eller den nyeste enn 17.5-versjonen.
- Grunnleggende kunnskap om JavaScript.
Hvordan lage HTTP-forespørsler i node.js med node-fetch?
Å gjøre HTTP-forespørslene er en asynkron prosedyre, da det tar litt tid å motta det forespurte svaret. Det er slik at det kan være to metoder for å utnytte de asynkrone prosedyrene. Den første er at brukeren kan vente på svaret og deretter fortsette med koden. Den andre kjører koden parallelt.
Hvordan komme i gang med node-henting?
Før du begynner med eller installerer ' node-henting ”-modul, initialiser et nodeprosjekt ved hjelp av kommandoen nedenfor:
npm init - og
Ved å utføre denne kommandoen opprettes en ' package.json '-filen i gjeldende katalog, som følger:
Installer nå ' node-henting '-modul ved å bruke følgende cmdlet:
npm installasjonsnode - hente
For å installere en målmodulversjon, bruk imidlertid følgende kommando:
npm installasjonsnode - hente@ 2.0I dette tilfellet ' 2.0 '-versjonen av modulen vil bli installert.
Merk: Før du fortsetter med eksemplene, lag en ' index.mjs ”-filen i arbeidsområdet som skal brukes til å bruke funksjonene.
Eksempel 1: Send Hent forespørsler via node-henting
« node-henting ”-modulen kan brukes til å hente tekst fra en webserver eller dataene via Rest API.
Kodeeksemplet nedenfor skrevet i den opprettede ' index.mjs ”-filen lager en enkel Hent-forespørsel til YouTube-hjemmesiden:
import hente fra 'node-henting' ;hente ( 'https://youtube.com' )
. deretter ( res => res. tekst ( ) )
. deretter ( tekst => konsoll. Logg ( tekst ) ) ;
I disse kodelinjene:
- Last inn ' node-henting ”-modulen og hente YouTubes hjemmeside via den angitte URL-en som HTTP-forespørselen sendes til.
- Deretter kjeder du ' deretter() ” metoder for å håndtere svaret og dataene fra den fremsatte forespørselen.
- Den tidligere 'then()'-metoden indikerer at man venter på å få svaret fra YouTube-serveren og transformere det til tekstformat.
- Den sistnevnte 'then()'-metoden betyr ventetiden på resultatet av forrige transformasjon og viser den på konsollen.
Produksjon
Kjør nå koden via følgende cmdlet:
nodeindeks. mjsUtførelse av kommandoen ovenfor resulterer i å hente hele HTML-koden til YouTube-hjemmesiden som vises på konsollen:
Eksempel 2: Hent JSON-data fra Rest API
Dette eksemplet bruker ' node-henting ' for å få falske data via JSONPlassholder RestAPI. Det er slik at ' hente() ”-metoden omfatter serverens URL og venter på svar:
import hente fra 'node-henting' ;hente ( 'https://jsonplaceholder.typicode.com/users' )
. deretter ( res => res. json ( ) )
. deretter ( json => {
konsoll. Logg ( 'First Array User -> ' ) ;
konsoll. Logg ( json [ 0 ] ) ;
konsoll. Logg ( 'First Array User Name -> ' ) ;
konsoll. Logg ( json [ 0 ] . Navn ) ;
} )
I henhold til denne kodeblokken, utfør følgende trinn:
- HTTPS-kroppen består av JSON-formaterte data med brukerens data.
- Etter det, ' json() ”-funksjonen brukes for å påkalle de individuelle oppføringene og de tilsvarende verdiene.
Produksjon
Bruk cmdleten nedenfor for å utføre koden:
nodeindeks. mjs
Eksempel 3: Post forespørsler via node-henting
« node-henting ”-modulen kan også brukes til å legge inn forespørslene i stedet for å hente dem. Dette kan oppnås via ' hente() ” metode som inkluderer en ekstra parameter for å sende POST-forespørsler til en server.
Det er flere alternativer som kan tildeles med denne parameteren. Imidlertid, i dette tilfellet ' metode ', ' kropp ' og ' overskrifter ' vil bli brukt. Følgende er beskrivelsen av hvert av alternativene:
- « metode ' alternativet setter typen HTTP-forespørsler, dvs. 'POST' i dette scenariet.
- « kropp alternativet omfatter forespørselens brødtekst.
- « Overskrift '-alternativet inneholder alle de nødvendige overskriftene, dvs. ' Innholdstype ' i dette scenariet.
Gå nå videre til den praktiske implementeringen av å sende postforespørslene ved å legge til et nytt element til JSON-plassholderens ' alle '. Det gjøres ved å legge til et nytt element til listen med bruker-ID som '476':
import hente fra 'node-henting' ;la alt = {
bruker-ID : 476 ,
nettstedet : 'Dette er Linuxhint' ,
fullført : falsk
} ;
hente ( 'https://jsonplaceholder.typicode.com/todos' , {
metode : 'POST' ,
kropp : JSON. stringify ( alle ) ,
overskrifter : { 'Innholdstype' : 'applikasjon/json' }
} ) . deretter ( res => res. json ( ) )
. deretter ( json => konsoll. Logg ( json ) ) ;
I denne koden:
- Først av alt, lag et gjøremålsobjekt og transformer det til JSON mens du legger det til kroppen.
- Nå, på samme måte, spesifiser URL-en med de nødvendige alternativene som ' hente() ' metodens valgfrie parametere.
- Etter det bruker du ' JSON.stringify() ” metode for å transformere objektet til en formatert (JSON) streng før den sendes/overføres til webserveren.
- Gå videre, implementer den kombinerte ' deretter() ”-metoder for å hente dataene ved å avvente responsen, transformere den til JSON og logge til konsollen.
Produksjon
Utfør kommandoen nedenfor for å utføre koden:
nodeindeks. mjs
Hva er HTTP-statuskodene?
Før du går videre til neste eksempel, sørg for at hvis svaret inneholder en ' 3xx ” statuskode, må de ekstra trinnene tas av klienten. På samme måte er ' 4xx '-koder representerer en ugyldig forespørsel og ' 5xx ”-koder tilsvarer serverfeilene.
Merk: « å fange() ”-funksjonen kan ikke takle de ovenfor diskuterte tilfellene siden serverkommunikasjonen foregår på en strømlinjeformet måte. Derfor er en effektiv tilnærming for å sikre at de mislykkede forespørslene returnerer feilen å definere en funksjon som analyserer HTTP-statusen til serverens svar.
Eksempel 4: Mestring av unntak og begrensninger
Det kan være flere begrensninger eller unntak med de sendte forespørslene, dvs. problemer med Internett, ' hente() ' funksjonsbegrensninger osv. Disse unntakene kan håndteres ved å legge til ' å fange() ' funksjon:
funksjon analyseStatus ( x ) {hvis ( x. ok ) {
komme tilbake x
} ellers {
kaste ny Feil ( `HTTP-status i forhold til responsen -> $ { x. status } ( $ { x. statustekst } ) ` ) ;
}
}
hente ( 'https://jsonplaceholder.typicode.com/MissingResource' )
. deretter ( analyserStatus )
. deretter ( x => x. json ( ) )
. deretter ( json => konsoll. Logg ( json ) )
. å fange ( feil => konsoll. Logg ( feil ) ) ;
I denne kodebiten:
- Definer først en funksjon som har den angitte parameteren før du analyserer svaret for å takle begrensningene.
- Ta nå med ' hvis/annet ”-setninger for å kaste feilen eller en tilpasset begrensning.
- Etter det, på samme måte, bruk ' hente() ”-metoden og de tilhørende “then()”-metodene for å hente dataene ved å avvente svaret, transformere det til JSON og logge på konsollen.
- Til slutt kan kjøretidsunntakene håndteres ved å plassere ' å fange() ”-metoden ved løftekjedens ende.
Produksjon
Til slutt, kjør den nedenfor gitte cmdleten for å kjøre koden og kaste unntakene:
nodeindeks. mjs
Andre brukstilfeller av 'node-henting'
« node-henting ' kan også brukes til å lage ' API-forespørsler ' eller ' Nettskraping '. La oss diskutere disse brukstilfellene i detalj.
Bruk av node-henting for å lage API-forespørsler
API-en kan kreves i flere scenarier for å hente måldataene via en back-end-kilde. HTTP-forespørslene kan ha mange autentiseringsmetoder som å bruke en API-nøkkel der API-leverandøren gir en nøkkel som er begrenset til kun brukeren. En annen tilnærming for å skjerme API kan være via ' Grunnleggende autentisering ” der en header må sendes for å påkalle API.
Følgende er demonstrasjonen av sistnevnte tilnærming, dvs. 'Grunnleggende autentisering' i postforespørsel ved hjelp av ' hente() ' metode:
( asynkron ( ) => {konst x = venter på henting ( 'http://httpbin.org/post' , {
metode : 'POST' ,
overskrifter : {
'Autorisasjon' : `Grunnleggende $ { bror ( 'innloggings passord' ) } `
} ,
kropp : JSON. stringify ( {
'nøkkel' : 'verdi'
} )
} ) ;
konst resultat = vent x. tekst ( ) ;
konsoll. Logg ( resultat ) ;
} ) ( ) ;
I demonstrasjonen ovenfor sendes en header med en ' base64 ' kodet streng av formatet ' innloggings passord '.
Bruk av node-henting for nettskraping
' Nettskraping ” refererer til teknikken der data/innhold hentes fra nettstedene og analyseres. Denne parsingen oppnås via ' cheerio ' bibliotek.
Nedenfor er demonstrasjonen av å hente sidens tittel via ' hente() 'metode og ' cheerio ' bibliotek:
konst lib = krever ( 'oppmuntre' ) ;( asynkron ( ) => {
konst x = venter på henting ( 'https://linuxhint.com/' ) ;
konst og = vent x. tekst ( ) ;
konst $ = lib. laste ( og ) ;
konsoll. Logg ( $ ( 'tittel' ) . først ( ) . tekst ( ) ) ;
} ) ( ) ;
Dette eksemplet henter flisen til ' Linux ' nettstedets tittel.
Konklusjon
HTTP-forespørslene i node.js kan gjøres med node-henting ved å sende get-forespørsler, hente JSON-data fra REST API eller sende postforespørsler. Unntakene og begrensningene kan også håndteres effektivt via ' å fange() ' funksjon.