Com fer sol·licituds HTTP a Node.js amb node-fetch

Com Fer Sol Licituds Http A Node Js Amb Node Fetch



Les sol·licituds HTTP són crucials i es fan per obtenir informació dels URL globalment, és a dir, invocar un lloc web, etc. Aquest enfocament entra en vigor quan una aplicació web necessita establir comunicació amb els servidors web per accedir als recursos. Per exemple, recuperar o publicar les dades a un servidor web o API.

En JavaScript, es pot dur a terme a través del ' window.fetch() ” mètode. Tanmateix, en “ node.js ”, aquesta funcionalitat es pot aconseguir mitjançant diversos paquets, és a dir, node-fetch, etc.

Aquest bloc explica les àrees de contingut següents:







Què és 'node-fetch'?

El ' recuperació de nodes ” correspon a un mòdul lleuger que fa que l'API fetch sigui accessible a node.js. Aquest mòdul també permet als usuaris utilitzar el ' buscar() ” mètode a node.js que és principalment similar al JavaScript “ window.fetch() ” mètode.



Sintaxi (Mètode Fetch())



buscar ( url [ , opcions ] ) ;

En aquesta sintaxi:





  • url ” fa referència a l'URL del recurs que cal obtenir/recuperar.
  • El ' opcions ' El paràmetre és necessari quan cal utilitzar el mètode 'fetch()' a part de fer un ' ACONSEGUIR ” petició.

Valor de retorn

Aquesta funció recupera un objecte Resposta que inclou informació sobre una resposta HTTP de la següent manera:



  • text: Recupera el cos de la resposta en forma de cadena.
  • capçaleres: Retorna un objecte que inclou els controladors de respostes.
  • json(): Analitza el cos de la resposta en un objecte JSON.
  • statustext/estat: Conté la informació sobre el codi d'estat HTTP.
  • D'acord: Dóna ' veritat ” si l'estat és un codi d'estat 2xx.

Requisits previs per utilitzar node-fetch

Els següents són els requisits previs a tenir en compte abans de començar amb ' recuperació de nodes ”:

  • S'ha instal·lat com a mínim o la més recent que la versió 17.5.
  • Coneixements bàsics de JavaScript.

Com fer sol·licituds HTTP a node.js amb node-fetch?

Fer les sol·licituds HTTP és un procediment asíncron, ja que rebre la resposta sol·licitada triga un temps. És tal que hi pot haver dues metodologies per utilitzar els procediments asíncrons. La primera és que l'usuari pot esperar la resposta i després reprendre amb el codi. L'altre és executar el codi en paral·lel.

Com començar amb node-fetch?

Abans de començar o instal·lar el ' recuperació de nodes ”, inicialitzeu un projecte de node amb l'ajuda de l'ordre que es mostra a continuació:

npm init - i

En executar aquesta ordre es crea un ' package.json ” al directori actual, de la següent manera:

Ara, instal·leu el ' recuperació de nodes ” mitjançant el cmdlet següent:

node d'instal·lació npm - buscar

Tanmateix, per instal·lar una versió del mòdul de destinació, utilitzeu l'ordre següent:

node d'instal·lació npm - buscar@ 2.0

En aquest cas, el ' 2.0 s'instal·larà la versió del mòdul.

Nota: Abans de continuar amb els exemples, creeu un ' index.mjs ” a l'espai de treball que s'utilitzarà per aplicar les funcionalitats.

Exemple 1: Envia sol·licituds d'obtenció mitjançant node-fetch

El ' recuperació de nodes El mòdul es pot utilitzar per obtenir text d'un servidor web o les dades mitjançant l'API Rest.

L'exemple de codi següent escrit en el format ' index.mjs ” fa una simple sol·licitud d'obtenció a la pàgina d'inici de YouTube:

importar buscar des de 'obtenció de nodes' ;

buscar ( 'https://youtube.com' )

. aleshores ( res => res. text ( ) )

. aleshores ( text => consola. registre ( text ) ) ;

En aquestes línies de codi:

  • Carregueu el ' recuperació de nodes ” i recupereu la pàgina d'inici de YouTube mitjançant l'URL especificat al qual es fa la sol·licitud HTTP.
  • Després d'això, encadena el ' llavors () ” mètodes per gestionar la resposta i les dades de la sol·licitud realitzada.
  • L'antic mètode 'then()' indica l'espera per obtenir la resposta del servidor de YouTube i transformar-la en format de text.
  • L'últim mètode 'then()' significa l'espera del resultat de la transformació anterior i el mostra a la consola.

Sortida

Ara, executeu el codi mitjançant el cmdlet següent:

índex de nodes. mjs

Si executeu l'ordre anterior, es recuperarà tot el marcatge HTML de la pàgina d'inici de YouTube que es mostra a la consola:

Exemple 2: Recupereu dades JSON de l'API Rest

Aquest exemple utilitza ' recuperació de nodes ” per obtenir dades falses mitjançant el JSONPlaceholder RestAPI. És tal que el ' buscar() El mètode inclou l'URL del servidor i espera una resposta:

importar buscar des de 'obtenció de nodes' ;

buscar ( 'https://jsonplaceholder.typicode.com/users' )

. aleshores ( res => res. json ( ) )

. aleshores ( json => {

consola. registre ( 'Primer usuari de matriu ->' ) ;

consola. registre ( json [ 0 ] ) ;

consola. registre ( 'Nom d'usuari del primer array ->' ) ;

consola. registre ( json [ 0 ] . nom ) ;

} )

D'acord amb aquest bloc de codi, realitzeu els passos següents:

  • El cos HTTPS inclou dades amb format JSON que contenen les dades de l'usuari.
  • Després d'això, el ' json() ” s'aplica per invocar les entrades individuals i els valors corresponents.

Sortida

Apliqueu el cmdlet que s'indica a continuació per executar el codi:

índex de nodes. mjs

Exemple 3: publicació de sol·licituds mitjançant node-fetch

El ' recuperació de nodes ” també es pot utilitzar per publicar les sol·licituds en lloc de recuperar-les. Això es pot aconseguir mitjançant el ' buscar() ” mètode que inclou un paràmetre addicional per fer peticions POST a un servidor.

Hi ha diverses opcions que es poden assignar amb aquest paràmetre. Tanmateix, en aquest cas, el ' mètode ”, “ cos ' i ' capçaleres ' serà utilitzat. A continuació es mostra la descripció de cadascuna de les opcions:

  • El ' mètode L'opció estableix el tipus de sol·licituds HTTP, és a dir, 'POST' en aquest escenari.
  • El ' cos ” opció comprèn el cos de la sol·licitud.
  • El ' capçalera L'opció 'conté totes les capçaleres necessàries, és a dir, ' Tipus de contingut ” en aquest escenari.

Ara, passeu a la implementació pràctica d'enviar les sol·licituds de publicació afegint un element nou al marcador de posició JSON ' tots ”. Es fa afegint un element nou a la llista amb l'ID d'usuari '476':

importar buscar des de 'obtenció de nodes' ;

let tot = {

ID d'usuari : 476 ,

lloc : 'Això és Linuxhint' ,

completat : fals

} ;

buscar ( 'https://jsonplaceholder.typicode.com/todos' , {

mètode : 'POST' ,

cos : JSON. stringir ( tot ) ,

capçaleres : { 'Tipus de contingut' : 'aplicació/json' }

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

. aleshores ( json => consola. registre ( json ) ) ;

En aquest codi:

  • En primer lloc, creeu un objecte tot i transformeu-lo a JSON mentre l'afegiu al cos.
  • Ara, de la mateixa manera, especifiqueu l'URL amb les opcions necessàries com a ' buscar() paràmetres opcionals del mètode.
  • Després d'això, apliqueu el ' JSON.stringify() ” mètode per transformar l'objecte en una cadena formatada (JSON) abans d'enviar-lo/transmetre-lo al servidor web.
  • Seguint endavant, implementeu la combinació ' llavors () ” per recuperar les dades esperant la resposta, transformant-les a JSON i iniciant sessió a la consola, respectivament.

Sortida

Executeu l'ordre que es proporciona a continuació per executar el codi:

índex de nodes. mjs

Quins són els codis d'estat HTTP?

Abans de passar al següent exemple, assegureu-vos que si la resposta inclou un ' 3xx ” codi d'estat, els passos addicionals els ha de fer el client. Així mateix, el “ 4xx Els codis ' representen una sol·licitud no vàlida i el ' 5xx ” els codis corresponen als errors del servidor.

Nota: El ' atrapar() ” La funció no pot fer front als casos comentats anteriorment, ja que la comunicació del servidor es realitza de manera simplificada. Per tant, un enfocament eficaç per assegurar-se que les sol·licituds fallides retornin l'error és definir una funció que analitzi l'estat HTTP de la resposta del servidor.

Exemple 4: Fer front a les excepcions i limitacions

Hi pot haver diverses limitacions o excepcions amb les sol·licituds enviades, és a dir, problemes amb Internet, ' buscar() ” limitacions de funció, etc. Aquestes excepcions es poden gestionar afegint el “ atrapar() ” funció:

funció analitzar l'estat ( x ) {

si ( x. D'acord ) {

tornar x

} altra cosa {

llançar nou Error ( `Estat HTTP pel que fa a la resposta -> $ { x. estat } ( $ { x. statusText } ) ` ) ;

}

}

buscar ( 'https://jsonplaceholder.typicode.com/MissingResource' )

. aleshores ( analitzar l'estat )

. aleshores ( x => x. json ( ) )

. aleshores ( json => consola. registre ( json ) )

. agafar ( errar => consola. registre ( errar ) ) ;

En aquest fragment de codi:

  • En primer lloc, definiu una funció que tingui el paràmetre indicat abans d'analitzar la resposta per fer front a les limitacions enfrontades.
  • Ara, inclou el ' si una altra cosa ” declaracions per llançar l'error enfrontat o una limitació personalitzada.
  • Després d'això, de la mateixa manera, apliqueu el ' buscar() ” i els mètodes associats “then()” per recuperar les dades esperant la resposta, transformant-la a JSON i iniciant sessió a la consola.
  • Finalment, les excepcions en temps d'execució es poden tractar col·locant el ' atrapar() ” mètode al final de la cadena de promeses.

Sortida

Finalment, executeu el cmdlet que s'indica a continuació per executar el codi i llançar les excepcions enfrontades:

índex de nodes. mjs

Altres casos d'ús de 'node-fetch'

El ' recuperació de nodes ' també es pot utilitzar per fer ' Sol·licituds d'API ' o ' Raspat web ”. Parlem d'aquests casos d'ús en detall.

Ús de node-fetch per fer sol·licituds d'API

L'API es pot requerir en diversos escenaris per obtenir les dades de destinació mitjançant una font de fons. Les sol·licituds HTTP poden tenir molts mètodes d'autenticació, com ara l'ús d'una clau API on el proveïdor d'API proporciona una clau que només es limita a l'usuari. Un altre enfocament per protegir l'API pot ser mitjançant ' Autenticació bàsica ” en què cal enviar una capçalera per invocar l'API.

A continuació es mostra la demostració d'aquest últim enfocament, és a dir, 'Autenticació bàsica' a la sol·licitud posterior amb l'ajuda del ' buscar() ” mètode:

( asíncron ( ) => {

const x = esperar a buscar ( 'http://httpbin.org/post' , {

mètode : 'POST' ,

capçaleres : {

'Autorització' : `$ bàsic { germà ( 'login:contrasenya' ) } `

} ,

cos : JSON. stringir ( {

'clau' : 'valor'

} )

} ) ;

const resultat = espera x. text ( ) ;

consola. registre ( resultat ) ;

} ) ( ) ;

A la demostració anterior, s'envia una capçalera amb un ' base 64 'cadena codificada del format' inici de sessió: contrasenya ”.

Ús de node-fetch per a Web Scraping

Raspat web ” es refereix a la tècnica en què s'obtenen les dades/continguts dels llocs i s'analitzen. Aquesta anàlisi s'aconsegueix mitjançant el ' alegre ” biblioteca.

A continuació es mostra la demostració d'obtenir el títol de la pàgina mitjançant el ' buscar() mètode ' i ' alegre ” biblioteca:

const lib = requereixen ( 'animar' ) ;

( asíncron ( ) => {

const x = esperar a buscar ( 'https://linuxhint.com/' ) ;

const i = espera x. text ( ) ;

const $ = lib. càrrega ( i ) ;

consola. registre ( $ ( 'títol' ) . primer ( ) . text ( ) ) ;

} ) ( ) ;

Aquest exemple recupera la fitxa del ' Linux ” títol del lloc.

Conclusió

Les sol·licituds HTTP a node.js es poden fer amb node-fetch enviant sol·licituds d'obtenció, recuperant dades JSON de l'API REST o enviant sol·licituds de publicació. A més, les excepcions i limitacions es poden gestionar de manera eficaç mitjançant el ' atrapar() ” funció.