HTTP-kérések készítése a Node.js-ben a node-fetch segítségével

Http Keresek Keszitese A Node Js Ben A Node Fetch Segitsegevel



A HTTP-kérelmek kulcsfontosságúak, és arra szolgálnak, hogy információkat gyűjtsenek be az URL-címekről globálisan, azaz egy webhelyet hívjanak meg stb. Ez a megközelítés akkor lép életbe, ha egy webalkalmazásnak kommunikációt kell létrehoznia a webszerverekkel az erőforrásokhoz való hozzáférés érdekében. Például az adatok lekérése vagy közzététele webszerverre vagy API-ra.

JavaScriptben ez a ' window.fetch() ” módszerrel. Azonban a „ node.js ”, ez a funkció több csomag használatával is elérhető, például csomópont-lehívás stb.

Ez a blog a következő tartalmi területeket ismerteti:







Mi az a „csomópont-lehívás”?

A ' node-fetch ” egy könnyű modulnak felel meg, amely elérhetővé teszi a lekérési API-t a node.js számára. Ez a modul lehetővé teszi a felhasználók számára a „ fetch() ” metódus a node.js-ben, amely leginkább a JavaScript-hez hasonló window.fetch() ” módszerrel.



Szintaxis(fetch() metódus)



elhozni ( url [ , lehetőségek ] ) ;

Ebben a szintaxisban:





  • ' url ” a lehívandó/lekérendő erőforrás URL-címére utal.
  • A ' lehetőségek ' paraméterre akkor van szükség, ha a 'fetch()' metódus használatára van szükség a ' KAP ' kérés.

Visszatérési érték

Ez a funkció a HTTP-válaszra vonatkozó információkat tartalmazó Response objektumot kéri le az alábbiak szerint:



  • szöveg: Lekéri a válasz törzsét karakterlánc formájában.
  • fejlécek: Egy objektumot ad vissza, amely a válaszkezelőket tartalmazza.
  • json(): Elemezi a válasz törzsét egy JSON-objektumban.
  • statustext/status: Tartalmazza a HTTP állapotkóddal kapcsolatos információkat.
  • rendben: ad' igaz ” ha az állapot 2xx állapotkód.

A node-fetch használatának előfeltételei

Az alábbiak azok az előfeltételek, amelyeket figyelembe kell venni, mielőtt elkezdené a „ node-fetch ”:

  • Legalább vagy a legújabb, mint a 17.5-ös verzió telepítve.
  • JavaScript alapismeretek.

Hogyan készítsünk HTTP-kéréseket a node.js-ben a node-fetch funkcióval?

A HTTP kérések előállítása aszinkron eljárás, mivel a kért válasz fogadása eltart egy ideig. Ez olyan, hogy az aszinkron eljárások felhasználására két módszer létezik. Az első az, hogy a felhasználó megvárhatja a választ, majd folytathatja a kóddal. A másik párhuzamosan hajtja végre a kódot.

Hogyan kezdjük el a csomópont-lehívást?

Mielőtt elkezdené vagy telepítené a „ node-fetch ” modul, inicializáljon egy csomópont-projektet az alábbi parancs segítségével:

npm init - és

A parancs végrehajtása létrehoz egy ' package.json ” fájlt az aktuális könyvtárban, az alábbiak szerint:

Most telepítse a „ node-fetch ” modult a következő parancsmag használatával:

npm telepítési csomópont - elhozni

A célmodul verziójának telepítéséhez azonban használja a következő parancsot:

npm telepítési csomópont - fetch@ 2.0

Ebben az esetben a „ 2.0 ” verziójú modul telepítésre kerül.

Jegyzet: Mielőtt folytatná a példákkal, hozzon létre egy „ index.mjs ” fájlt a munkaterületen, amelyet a funkciók alkalmazására használunk.

1. példa: Kérések küldése csomópont-lehíváson keresztül

A ' node-fetch ” modul használható szövegek lekérésére egy webszerverről, vagy az adatok Rest API-n keresztül.

Az alábbi kódpélda a létrehozott ' index.mjs ” fájl egy egyszerű Get kérést küld a YouTube kezdőlapjára:

import elhozni tól től 'node-fetch' ;

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

. akkor ( res => res. szöveg ( ) )

. akkor ( szöveg => konzol. log ( szöveg ) ) ;

Ezekben a kódsorokban:

  • Töltse be a ' node-fetch ” modult, és letöltheti a YouTube kezdőlapját azon a megadott URL-címen keresztül, amelyre a HTTP-kérés érkezik.
  • Ezt követően láncolja a „ akkor() ” módszerek a beküldött kérés válaszának és adatainak kezelésére.
  • Az előbbi „then()” metódus azt jelzi, hogy várni kell a válaszra a YouTube-szervertől, és szöveges formátumba alakítani.
  • Az utóbbi „then()” metódus az előző átalakítás eredményére való várakozást jelöli, és megjeleníti a konzolon.

Kimenet

Most futtassa a kódot a következő parancsmagon keresztül:

csomópont index. mjs

A fenti parancs végrehajtása a konzolon megjelenő YouTube kezdőlap teljes HTML-jelölésének lekérését eredményezi:

2. példa: JSON-adatok lekérése a Rest API-ból

Ez a példa a „ node-fetch ” hamis adatok beszerzéséhez a JSONPlaceholder RestAPI. Ez olyan, hogy a „ fetch() ” metódus tartalmazza a szerver URL-jét, és válaszra vár:

import elhozni tól től 'node-fetch' ;

elhozni ( „https://jsonplaceholder.typicode.com/users” )

. akkor ( res => res. json ( ) )

. akkor ( json => {

konzol. log ( 'First Array User ->' ) ;

konzol. log ( json [ 0 ] ) ;

konzol. log ( 'First Array User Name -> ' ) ;

konzol. log ( json [ 0 ] . név ) ;

} )

Ennek a kódblokknak megfelelően hajtsa végre a következő lépéseket:

  • A HTTPS törzs JSON formátumú adatokat tartalmaz, amelyek a felhasználó adatait tartalmazzák.
  • Ezt követően a „ json() ” függvényt alkalmazzuk az egyes bejegyzések és a megfelelő értékek meghívására.

Kimenet

Alkalmazza az alábbi parancsmagot a kód végrehajtásához:

csomópont index. mjs

3. példa: Feladási kérelmek csomópont-lehíváson keresztül

A ' node-fetch ” modul is használható a kérések feladására ahelyett, hogy lekérnénk őket. Ezt a „ fetch() ” metódus, amely egy további paramétert is tartalmaz a POST kérések kiszolgálóhoz történő küldéséhez.

Ezzel a paraméterrel több lehetőség is hozzárendelhető. Ebben az esetben azonban a „ módszer ', ' test ” és „ fejlécek ' használva lesz. Az alábbiakban az egyes lehetőségek leírása található:

  • A ' módszer ” opció beállítja a HTTP-kérések típusát, azaz a „POST”-ot ebben a forgatókönyvben.
  • A ' test ” opció tartalmazza a kérés törzsét.
  • A ' fejléc ” opció tartalmazza az összes szükséges fejlécet, azaz: „ Tartalom típus ” ebben a forgatókönyvben.

Most folytassa a bejegyzéskérések elküldésének gyakorlati megvalósításával úgy, hogy új elemet fűz hozzá a JSON-helyőrző ' minden ”. Ez úgy történik, hogy hozzáadunk egy új elemet a listához, amelynek felhasználói azonosítója „476”:

import elhozni tól től 'node-fetch' ;

engedj mindent = {

Felhasználói azonosító : 476 ,

webhely : 'Ez Linuxhint' ,

elkészült : hamis

} ;

elhozni ( „https://jsonplaceholder.typicode.com/todos” , {

módszer : 'POST' ,

test : JSON. szigorít ( minden ) ,

fejlécek : { 'Tartalom típus' : 'applikáció/json' }

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

. akkor ( json => konzol. log ( json ) ) ;

Ebben a kódban:

  • Először is hozzon létre egy teendőobjektumot, és alakítsa át JSON-ba, miközben hozzáfűzi a törzshöz.
  • Most hasonlóképpen adja meg az URL-t a szükséges beállításokkal, mint ' fetch() ” metódus választható paraméterei.
  • Ezt követően alkalmazza a „ JSON.stringify() ” metódussal alakíthatja át az objektumot formázott (JSON) karakterláncsá, mielőtt elküldené/küldené a webszervernek.
  • Ha előre haladunk, hajtsuk végre a kombinált „ akkor() ” módszerekkel kérheti le az adatokat úgy, hogy megvárja a választ, átalakítja azokat JSON-ba, majd bejelentkezik a konzolra.

Kimenet

A kód végrehajtásához hajtsa végre az alábbi parancsot:

csomópont index. mjs

Mik azok a HTTP állapotkódok?

Mielőtt továbblépne a következő példára, győződjön meg arról, hogy ha a válasz egy ' 3xx ” állapotkód, a plusz lépéseket az ügyfélnek kell megtennie. Hasonlóképpen a „ 4xx ' kódok érvénytelen kérést jelentenek, és a ' 5xx ” kódok a szerverhibáknak felelnek meg.

Jegyzet: A ' fogás() ” funkció nem tud megbirkózni a fent tárgyalt esetekkel, mivel a szerver kommunikáció áramvonalasan megy végbe. Ezért hatékony módszer annak biztosítására, hogy a sikertelen kérések a hibát adják vissza, ha meghatározunk egy függvényt, amely elemzi a kiszolgáló válaszának HTTP-állapotát.

4. példa: Megbirkózni a kivételekkel és korlátokkal

Számos korlátozás vagy kivétel lehet az elküldött kérelmekkel kapcsolatban, például az internettel kapcsolatos problémák, ' fetch() ' funkció korlátozásai stb. Ezeket a kivételeket a ' fogás() ” funkció:

függvényelemzésStatus ( x ) {

ha ( x. rendben ) {

Visszatérés x

} más {

dobás új Hiba ( `HTTP állapot a válasz tekintetében -> $ { x. állapot } ( $ { x. statusText } ) ` ) ;

}

}

elhozni ( „https://jsonplaceholder.typicode.com/MissingResource” )

. akkor ( elemziStatus )

. akkor ( x => x. json ( ) )

. akkor ( json => konzol. log ( json ) )

. fogás ( téved => konzol. log ( téved ) ) ;

Ebben a kódrészletben:

  • Először is definiáljon egy függvényt, amely rendelkezik a megadott paraméterrel, mielőtt elemzi a választ, hogy megbirkózzon a felmerülő korlátokkal.
  • Most foglalja bele a „ ha más ” utasításokat a szembesült hiba vagy egyéni korlátozás kidobásához.
  • Ezt követően hasonlóan alkalmazza a „ fetch() ” metódus és a kapcsolódó „then()” metódusok az adatok lekéréséhez úgy, hogy megvárja a választ, átalakítja azokat JSON-ba, és bejelentkezik a konzolba.
  • Végül a futásidejű kivételek kezelhetők a „ fogás() ” módszer az ígéretlánc végén.

Kimenet

Végül futtassa az alábbi parancsmagot a kód futtatásához, és dobja ki a szembetűnő kivételeket:

csomópont index. mjs

A „csomópont-lehívás” egyéb használati esetei

A ' node-fetch '' készítésére is használható API kérések ” vagy „ Webkaparás ”. Beszéljük meg ezeket a felhasználási eseteket részletesen.

A csomópont-lehívás használata API-kérések készítéséhez

Az API-ra több forgatókönyvben is szükség lehet a céladatok háttérforráson keresztüli lekéréséhez. A HTTP-kérelmek számos hitelesítési módszert tartalmazhatnak, például API-kulcsot használnak, ahol az API-szolgáltató olyan kulcsot biztosít, amely csak a felhasználóra korlátozódik. Az API árnyékolásának másik módja a „ Alapszintű hitelesítés ”, amelyben az API meghívásához fejlécet kell küldeni.

Az alábbiakban az utóbbi megközelítés bemutatása látható, azaz az „Alap hitelesítés” posta kérésben a „ fetch() ” módszer:

( async ( ) => {

const x = várni kell ( „http://httpbin.org/post” , {

módszer : 'POST' ,

fejlécek : {

'Engedélyezés' : `Alap $ { tesó ( 'bejelentkezési jelszó' ) } `

} ,

test : JSON. szigorít ( {

'kulcs' : 'érték'

} )

} ) ;

const eredmény = várj x-et. szöveg ( ) ;

konzol. log ( eredmény ) ;

} ) ( ) ;

A fenti demonstrációban egy fejlécet küldünk egy „ alap64 ' kódolt karakterlánc a formátumban ' bejelentkezési jelszó ”.

Csomópont-lehívás használata a webkaparáshoz

' Webkaparás ” arra a technikára utal, amellyel az adatokat/tartalmat lekérik a webhelyekről és elemzik. Ez az elemzés a „ viszlátot mond ” könyvtár.

Az alábbiakban bemutatjuk, hogyan lehet lekérni az oldal címét a „ fetch() ' módszer és ' viszlátot mond ” könyvtár:

const lib = igényelnek ( 'éljenzés' ) ;

( async ( ) => {

const x = várni kell ( „https://linuxhint.com/” ) ;

const és = várj x-et. szöveg ( ) ;

const $ = lib. Betöltés ( és ) ;

konzol. log ( $ ( 'cím' ) . első ( ) . szöveg ( ) ) ;

} ) ( ) ;

Ez a példa lekéri a ' Linux ” webhely címe.

Következtetés

A node.js-ben található HTTP-kérelmek csomópont-lekéréssel hajthatók végre get-kérések küldésével, JSON-adatok lekérésével a REST API-ból vagy bejegyzési kérelmek küldésével. Ezenkívül a kivételek és korlátozások hatékonyan kezelhetők a „ fogás() ” funkciót.