Come effettuare richieste HTTP in Node.js con node-fetch

Come Effettuare Richieste Http In Node Js Con Node Fetch



Le richieste HTTP sono cruciali e vengono effettuate per recuperare informazioni dagli URL a livello globale, ad esempio richiamando un sito Web, ecc. Questo approccio entra in vigore quando un'applicazione Web deve stabilire una comunicazione con i server Web per accedere alle risorse. Ad esempio, recuperando o pubblicando i dati su un server Web o API.

In JavaScript, può essere eseguito tramite il ' finestra.fetch() ' metodo. Tuttavia, in “ nodo.js ”, questa funzionalità può essere ottenuta utilizzando più pacchetti, ad esempio node-fetch, ecc.

Questo blog spiega le seguenti aree di contenuto:







Cos'è il 'recupero dei nodi'?

IL ' recupero del nodo ' corrisponde a un modulo leggero che rende l'API di recupero accessibile a node.js. Questo modulo consente inoltre agli utenti di utilizzare il ' andare a prendere() 'metodo in node.js che è per lo più simile a JavaScript' finestra.fetch() ' metodo.



Sintassi(metodo fetch())



andare a prendere ( URL [ , opzioni ] ) ;

In questa sintassi:





  • URL ' si riferisce all'URL della risorsa che deve essere recuperata/recuperata.
  • IL ' opzioni Il parametro ' è necessario quando è necessario utilizzare il metodo 'fetch()' oltre a creare un ' OTTENERE ' richiesta.

Valore di ritorno

Questa funzione recupera un oggetto Response comprendente informazioni relative a una risposta HTTP come segue:



  • testo: Recupera il corpo della risposta sotto forma di stringa.
  • intestazioni: Restituisce un oggetto che comprende i gestori di risposta.
  • json(): Analizza il corpo della risposta in un oggetto JSON.
  • testo di stato/stato: Comprende le informazioni relative al codice di stato HTTP.
  • OK: Dà “ VERO ' se lo stato è un codice di stato 2xx.

Prerequisiti per l'utilizzo di node-fetch

Di seguito sono riportati i prerequisiti da considerare prima di iniziare con “ recupero del nodo ':

  • Installato almeno o più tardi della versione 17.5.
  • Conoscenza di base di JavaScript.

Come effettuare richieste HTTP in node.js con node-fetch?

Effettuare le richieste HTTP è una procedura asincrona poiché la ricezione della risposta richiesta richiede del tempo. È tale che possono esserci due metodologie per utilizzare le procedure asincrone. Il primo è che l'utente può attendere la risposta e poi riprendere con il codice. L'altro sta eseguendo il codice in parallelo.

Come iniziare con il recupero dei nodi?

Prima di iniziare o installare il “ recupero del nodo ', inizializza un progetto di nodo con l'aiuto del comando indicato di seguito:

npm init - E

L'esecuzione di questo comando crea un ' pacchetto.json ' nella directory corrente, come segue:

Ora installa il ' recupero del nodo ' modulo utilizzando il seguente cmdlet:

Nodo di installazione npm - andare a prendere

Tuttavia, per installare una versione del modulo di destinazione, utilizzare il seguente comando:

Nodo di installazione npm - andare a prendere@ 2.0

In questo caso, il “ 2.0 'Verrà installata la versione del modulo.

Nota: Prima di procedere con gli esempi, crea un “ indice.mjs ' nell'area di lavoro che verrà utilizzata per applicare le funzionalità.

Esempio 1: Invia richieste di ricezione tramite node-fetch

IL ' recupero del nodo Il modulo può essere utilizzato per ottenere testo da un server Web o dati tramite Rest API.

L'esempio di codice seguente scritto nel creato ' indice.mjs ' effettua una semplice richiesta Ottieni alla home page di YouTube:

importare andare a prendere da 'recupero del nodo' ;

andare a prendere ( 'https://youtube.com' )

. Poi ( ris => ris. testo ( ) )

. Poi ( testo => consolle. tronco d'albero ( testo ) ) ;

In queste righe di codice:

  • Carica il ' recupero del nodo ' e recupera la home page di YouTube tramite l'URL specificato a cui viene effettuata la richiesta HTTP.
  • Successivamente, incatena il ' Poi() ' metodi per gestire la risposta e i dati della richiesta effettuata.
  • Il precedente metodo 'then()' indica l'attesa di ricevere la risposta dal server YouTube e trasformarla in formato testo.
  • Quest'ultimo metodo “then()” indica l'attesa dell'esito della trasformazione precedente e lo visualizza sulla console.

Produzione

Ora esegui il codice tramite il seguente cmdlet:

indice del nodo. mjs

L'esecuzione del comando precedente comporta il recupero dell'intero markup HTML della home page di YouTube visualizzata sulla console:

Esempio 2: Recupera i dati JSON dall'API Rest

Questo esempio utilizza ' recupero del nodo ' per ottenere dati falsi tramite il file JSONSegnaposto RestAPI. È tale che “ andare a prendere() Il metodo comprende l'URL del server e attende una risposta:

importare andare a prendere da 'recupero del nodo' ;

andare a prendere ( 'https://jsonplaceholder.typicode.com/users' )

. Poi ( ris => ris. json ( ) )

. Poi ( json => {

consolle. tronco d'albero ( 'Primo utente dell'array -> ' ) ;

consolle. tronco d'albero ( json [ 0 ] ) ;

consolle. tronco d'albero ( 'Nome utente primo array -> ' ) ;

consolle. tronco d'albero ( json [ 0 ] . nome ) ;

} )

Secondo questo blocco di codice, eseguire i seguenti passaggi:

  • Il corpo HTTPS comprende dati in formato JSON contenenti i dati dell'utente.
  • Dopodiché, il “ json() ” viene applicata per richiamare le singole voci e i valori corrispondenti.

Produzione

Applicare il cmdlet indicato di seguito per eseguire il codice:

indice del nodo. mjs

Esempio 3: inviare richieste tramite node-fetch

IL ' recupero del nodo Il modulo può anche essere utilizzato per pubblicare le richieste invece di recuperarle. Ciò può essere ottenuto tramite il “ andare a prendere() ' Metodo che include un parametro aggiuntivo per effettuare richieste POST a un server.

Sono disponibili più opzioni che possono essere allocate con questo parametro. Tuttavia, in questo caso, il “ metodo ', ' corpo ' E ' intestazioni ' sarà usato. Di seguito è riportata la descrizione di ciascuna opzione:

  • IL ' metodo L'opzione imposta il tipo di richieste HTTP, ad esempio 'POST' in questo scenario.
  • IL ' corpo L'opzione ' comprende il corpo della richiesta.
  • IL ' intestazione L'opzione ' contiene tutte le intestazioni richieste, ad esempio ' Tipo di contenuto ' in questo scenario.

Ora passiamo all'implementazione pratica dell'invio delle richieste di posta aggiungendo un nuovo elemento al segnaposto JSON ' Tutto ”. Viene fatto aggiungendo un nuovo elemento all'elenco avente l'ID utente come '476':

importare andare a prendere da 'recupero del nodo' ;

lascia tutto = {

ID utente : 476 ,

luogo : 'Questo è Linuxhint' ,

completato : falso

} ;

andare a prendere ( 'https://jsonplaceholder.typicode.com/todos' , {

metodo : 'INVIARE' ,

corpo : JSON. stringere ( Tutto ) ,

intestazioni : { 'Tipo di contenuto' : 'applicazione/json' }

} ) . Poi ( ris => ris. json ( ) )

. Poi ( json => consolle. tronco d'albero ( json ) ) ;

In questo codice:

  • Prima di tutto, crea un oggetto todo e trasformalo in JSON aggiungendolo al corpo.
  • Ora, allo stesso modo, specifica l’URL con le opzioni richieste come “ andare a prendere() 'Parametri facoltativi del metodo.
  • Successivamente, applicare il ' JSON.stringify() ” per trasformare l'oggetto in una stringa formattata (JSON) prima di inviarlo/trasmetterlo al web server.
  • Andando avanti, attuare la strategia combinata “ Poi() ' metodi per recuperare i dati attendendo la risposta, trasformandoli in JSON e accedendo rispettivamente alla console.

Produzione

Esegui il comando fornito di seguito per eseguire il codice:

indice del nodo. mjs

Cosa sono i codici di stato HTTP?

Prima di procedere all'esempio successivo, assicurarsi che se la risposta comprende un ' 3xx 'codice di stato, i passaggi aggiuntivi devono essere eseguiti dal cliente. Allo stesso modo, il “ 4xx I codici ' rappresentano una richiesta non valida e il ' 5xx I codici corrispondono agli errori del server.

Nota: IL ' presa() ” non è in grado di far fronte ai casi sopra discussi poiché la comunicazione del server avviene in modo semplificato. Pertanto, un approccio efficace per garantire che le richieste non riuscite restituiscano l’errore è definire una funzione che analizzi lo stato HTTP della risposta del server.

Esempio 4: Affrontare eccezioni e limitazioni

Possono esserci diverse limitazioni o eccezioni con le richieste inviate, ad esempio problemi con Internet, ' andare a prendere() ', limitazioni delle funzioni, ecc. Queste eccezioni possono essere gestite aggiungendo il simbolo ' presa() ' funzione:

funzione analizzaStato ( X ) {

Se ( X. OK ) {

ritorno X

} altro {

gettare nuovo Errore ( `Stato HTTP rispetto alla risposta -> $ { X. stato } ( $ { X. statusText } ) ` ) ;

}

}

andare a prendere ( 'https://jsonplaceholder.typicode.com/MissingResource' )

. Poi ( analyzeStatus )

. Poi ( X => X. json ( ) )

. Poi ( json => consolle. tronco d'albero ( json ) )

. presa ( errare => consolle. tronco d'albero ( errare ) ) ;

In questo frammento di codice:

  • Innanzitutto, definire una funzione avente il parametro indicato prima di analizzare la risposta per far fronte alle limitazioni affrontate.
  • Ora, includi il ' se altro ' dichiarazioni per generare l'errore riscontrato o una limitazione personalizzata.
  • Successivamente, analogamente, applicare il “ andare a prendere() ' e i metodi 'then()' associati per recuperare i dati attendendo la risposta, trasformandoli in JSON e accedendo alla console.
  • Infine, le eccezioni di runtime possono essere gestite inserendo il ' presa() 'metodo alla fine della catena delle promesse.

Produzione

Infine, esegui il cmdlet indicato di seguito per eseguire il codice e generare le eccezioni affrontate:

indice del nodo. mjs

Altri casi d'uso di 'node-fetch'

IL ' recupero del nodo ' può essere utilizzato anche per creare ' Richieste API ' O ' Raschiamento Web ”. Discutiamo questi casi d'uso in dettaglio.

Utilizzo di node-fetch per effettuare richieste API

L'API può essere richiesta in diversi scenari per recuperare i dati di destinazione tramite un'origine back-end. Le richieste HTTP possono avere molti metodi di autenticazione come l'utilizzo di una chiave API in cui il provider API fornisce una chiave limitata solo all'utente. Un altro approccio per proteggere l’API può essere tramite “ Autenticazione di base ' in cui è necessario inviare un'intestazione per richiamare l'API.

Di seguito è riportata la dimostrazione di quest'ultimo approccio, ovvero 'Autenticazione di base' nella richiesta post con l'aiuto del comando ' andare a prendere() ' metodo:

( asincrono ( ) => {

cost X = attendere il recupero ( 'http://httpbin.org/post' , {

metodo : 'INVIARE' ,

intestazioni : {

'Autorizzazione' : 'Base $ { Fra ( 'password per il login' ) } `

} ,

corpo : JSON. stringere ( {

'chiave' : 'valore'

} )

} ) ;

cost risultato = attendere x. testo ( ) ;

consolle. tronco d'albero ( risultato ) ;

} ) ( ) ;

Nella dimostrazione precedente, viene inviata un'intestazione con un ' base64 'stringa codificata del formato' password per il login ”.

Utilizzo di node-fetch per Web Scraping

Raschiamento Web ' si riferisce alla tecnica con cui i dati/contenuti vengono recuperati dai siti e analizzati. Questa analisi viene ottenuta tramite il ' cheerio ' biblioteca.

Di seguito è riportata la dimostrazione di come recuperare il titolo della pagina tramite il comando ' andare a prendere() 'metodo' e ' cheerio ' biblioteca:

cost lib = richiedere ( 'allegria' ) ;

( asincrono ( ) => {

cost X = attendere il recupero ( 'https://linuxhint.com/' ) ;

cost E = attendere x. testo ( ) ;

cost $ = lib. carico ( E ) ;

consolle. tronco d'albero ( $ ( 'titolo' ) . Primo ( ) . testo ( ) ) ;

} ) ( ) ;

Questo esempio recupera il riquadro ' Linux ' il titolo del sito.

Conclusione

Le richieste HTTP in node.js possono essere effettuate con node-fetch inviando richieste get, recuperando dati JSON dall'API REST o inviando richieste post. Inoltre, le eccezioni e limitazioni possono essere gestite in modo efficace tramite il ' presa() ' funzione.