HTTP-pyyntöjen tekeminen Node.js:ssä solmun haulla

Http Pyyntojen Tekeminen Node Js Ssa Solmun Haulla



HTTP-pyynnöt ovat ratkaisevan tärkeitä, ja ne tehdään hakemaan tietoa URL-osoitteista maailmanlaajuisesti, eli kutsumaan verkkosivustoa jne. Tämä lähestymistapa tulee voimaan, kun verkkosovelluksen on muodostettava yhteys verkkopalvelimiin päästäkseen resursseihin. Esimerkiksi tietojen hakeminen tai lähettäminen verkkopalvelimelle tai API:lle.

JavaScriptissä se voidaan suorittaa ' window.fetch() ”menetelmä. Kuitenkin vuonna ' node.js ”, tämä toiminnallisuus voidaan saavuttaa käyttämällä useita paketteja, eli solmun haulla jne.

Tämä blogi selittää seuraavat sisältöalueet:







Mikä on 'solmun haku'?

' solmuhaku ” vastaa kevyttä moduulia, joka tekee haun API:n node.js:n käytettävissä. Tämän moduulin avulla käyttäjät voivat myös käyttää hae() ' -menetelmä node.js:ssa, joka on enimmäkseen samanlainen kuin JavaScript ' window.fetch() ”menetelmä.



Syntaksi(fetch()-menetelmä)



hakea ( url [ , vaihtoehtoja ] ) ;

Tässä syntaksissa:





  • ' url ” viittaa noudettavan/haettavana olevan resurssin URL-osoitteeseen.
  • ' vaihtoehtoja '-parametria tarvitaan, kun on tarpeen käyttää 'fetch()'-menetelmää muuta kuin ' SAADA ' pyyntö.

Palautusarvo

Tämä toiminto noutaa HTTP-vastausta koskevia tietoja sisältävän Response-objektin seuraavasti:



  • teksti: Hakee vastauskappaleen merkkijonon muodossa.
  • otsikot: Palauttaa objektin, joka sisältää vastauskäsittelijät.
  • json(): Jäsentää vastauksen rungon JSON-objektissa.
  • statusteksti/tila: Sisältää HTTP-tilakoodia koskevat tiedot.
  • okei: antaa' totta ', jos tila on 2xx-tilakoodi.

Node-fetch -toiminnon edellytykset

Seuraavat ovat edellytykset, jotka on otettava huomioon ennen kuin aloitat ' solmuhaku ”:

  • Asennettu vähintään tai uusin kuin 17.5-versio.
  • JavaScriptin perustiedot.

Kuinka tehdä HTTP-pyyntöjä node.js:ssä solmun haulla?

HTTP-pyyntöjen tekeminen on asynkroninen toiminto, koska pyydetyn vastauksen vastaanottaminen kestää jonkin aikaa. Se on sellainen, että asynkronisten menettelyjen hyödyntämiseen voi olla kaksi menetelmää. Ensimmäinen on, että käyttäjä voi odottaa vastausta ja jatkaa sitten koodilla. Toinen suorittaa koodia rinnakkain.

Kuinka päästä alkuun solmun haulla?

Ennen kuin aloitat tai asennat ' solmuhaku ”-moduuli, alusta solmuprojekti alla olevan komennon avulla:

npm init - ja

Tämän komennon suorittaminen luo ' package.json '-tiedosto nykyiseen hakemistoon seuraavasti:

Asenna nyt ' solmuhaku ”-moduuli seuraavalla cmdletillä:

npm asennussolmu - hakea

Kuitenkin, jos haluat asentaa kohdemoduulin version, käytä seuraavaa komentoa:

npm asennussolmu - hae@ 2.0

Tässä tapauksessa ' 2.0 ' -moduulin versio asennetaan.

Huomautus: Ennen kuin jatkat esimerkkien kanssa, luo ' index.mjs ”-tiedosto työtilassa, jota käytetään toimintojen käyttöön.

Esimerkki 1: Lähetä hakupyynnöt solmunhaun kautta

' solmuhaku ” -moduulia voidaan hyödyntää tekstin hakemiseen web-palvelimelta tai dataan Rest API:n kautta.

Alla oleva koodiesimerkki, joka on kirjoitettu luotuun ' index.mjs ”-tiedosto tekee yksinkertaisen Get-pyynnön YouTuben etusivulle:

tuonti hakea alkaen 'node-fetch' ;

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

. sitten ( res => res. teksti ( ) )

. sitten ( teksti => konsoli. Hirsi ( teksti ) ) ;

Näillä koodiriveillä:

  • Lataa ' solmuhaku ” -moduuli ja hakea YouTuben kotisivu määritetyn URL-osoitteen kautta, johon HTTP-pyyntö tehdään.
  • Sen jälkeen ketjuta ' sitten() ”menetelmiä käsitellä tehdyn pyynnön vastausta ja tietoja.
  • Entinen 'then()'-menetelmä tarkoittaa, että odottaa vastauksen saamista YouTube-palvelimelta ja sen muuntamista tekstimuotoon.
  • Jälkimmäinen 'then()'-menetelmä tarkoittaa edellisen muunnoksen tuloksen odottamista ja näyttää sen konsolissa.

Lähtö

Suorita nyt koodi seuraavan cmdletin kautta:

solmuindeksi. mjs

Yllä olevan komennon suorittaminen johtaa konsolissa näkyvän YouTube-etusivun koko HTML-merkinnän noutamiseen:

Esimerkki 2: Hae JSON-tiedot Rest API:sta

Tässä esimerkissä käytetään ' solmuhaku ' saadaksesi väärennettyjä tietoja JSONPlaceholder RestAPI. Se on sellainen, että ' hae() ' -menetelmä sisältää palvelimen URL-osoitteen ja odottaa vastausta:

tuonti hakea alkaen 'node-fetch' ;

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

. sitten ( res => res. json ( ) )

. sitten ( json => {

konsoli. Hirsi ( 'First Array User ->' ) ;

konsoli. Hirsi ( json [ 0 ] ) ;

konsoli. Hirsi ( 'First Array User Name ->' ) ;

konsoli. Hirsi ( json [ 0 ] . nimi ) ;

} )

Suorita seuraavat vaiheet tämän koodilohkon mukaan:

  • HTTPS-runko koostuu JSON-muotoisista tiedoista, joissa on käyttäjän tiedot.
  • Sen jälkeen ' json() ” -toimintoa käytetään yksittäisten merkintöjen ja vastaavien arvojen kutsumiseen.

Lähtö

Suorita koodi käyttämällä alla olevaa cmdlet-komentoa:

solmuindeksi. mjs

Esimerkki 3: Lähetyspyynnöt solmun haun kautta

' solmuhaku ” -moduulia voidaan käyttää myös pyyntöjen kirjaamiseen niiden hakemisen sijaan. Tämä voidaan saavuttaa ' hae() ” -menetelmä, joka sisältää lisäparametrin POST-pyyntöjen tekemiseen palvelimelle.

Tällä parametrilla voidaan varata useita vaihtoehtoja. Kuitenkin tässä tapauksessa ' menetelmä ', ' kehon ' ja ' otsikot ' käytetään. Seuraavassa on kuvaus jokaisesta vaihtoehdosta:

  • ' menetelmä ” -vaihtoehto määrittää HTTP-pyyntöjen tyypin, eli 'POST' tässä skenaariossa.
  • ' kehon ” -vaihtoehto sisältää pyynnön tekstiosan.
  • ' otsikko ' -vaihtoehto sisältää kaikki vaaditut otsikot, eli ' Sisältötyyppi ”tässä skenaariossa.

Siirry nyt lähetyspyyntöjen lähettämisen käytännön toteutukseen liittämällä uusi kohde JSON-paikkamerkkiin ' kaikki ”. Se tehdään lisäämällä luetteloon uusi kohde, jonka käyttäjätunnus on '476':

tuonti hakea alkaen 'node-fetch' ;

anna kaiken = {

käyttäjätunnus : 476 ,

sivusto : 'Tämä on Linuxvintti' ,

valmiiksi : väärä

} ;

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

menetelmä : 'LÄHETTÄÄ' ,

kehon : JSON. kiristää ( kaikki ) ,

otsikot : { 'Sisältötyyppi' : 'sovellus/json' }

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

. sitten ( json => konsoli. Hirsi ( json ) ) ;

Tässä koodissa:

  • Ensinnäkin, luo todo-objekti ja muunna se JSON-muotoon ja liitä se runkoon.
  • Määritä nyt myös URL-osoite vaadituilla vaihtoehdoilla muodossa ' hae() ” -menetelmän valinnaiset parametrit.
  • Käytä sen jälkeen ' JSON.stringify() ” -menetelmää objektin muuntamiseksi muotoilluksi (JSON) merkkijonoksi ennen sen lähettämistä/lähettämistä verkkopalvelimelle.
  • Siirry eteenpäin, toteuta yhdistetty ' sitten() ” menetelmiä tietojen hakemiseksi odottamalla vastausta, muuttamalla se JSON-muotoon ja kirjautumalla konsoliin.

Lähtö

Suorita alla annettu komento koodin suorittamiseksi:

solmuindeksi. mjs

Mitä ovat HTTP-tilakoodit?

Ennen kuin siirryt seuraavaan esimerkkiin, varmista, että jos vastaus sisältää ' 3xx ” tilakoodi, asiakkaan on suoritettava lisätoimenpiteet. Samoin ' 4xx ' koodit edustavat virheellistä pyyntöä ja ' 5xx ” koodit vastaavat palvelinvirheitä.

Huomautus: ' ottaa kiinni() ”-toiminto ei selviä edellä käsitellyissä tapauksissa, koska palvelinviestintä tapahtuu virtaviivaistettuna. Siksi tehokas tapa varmistaa, että epäonnistuneet pyynnöt palauttavat virheen, on määrittää funktio, joka analysoi palvelimen vastauksen HTTP-tilan.

Esimerkki 4: Poikkeuksista ja rajoituksista selviäminen

Lähetetyissä pyynnöissä voi olla useita rajoituksia tai poikkeuksia, kuten Internet-ongelmia, ' hae() ' -toimintorajoitukset jne. Nämä poikkeukset voidaan käsitellä liittämällä ' ottaa kiinni() ”toiminto:

funktion analysointitila ( x ) {

jos ( x. okei ) {

palata x

} muu {

heittää Uusi Virhe ( `HTTP-tila suhteessa vastaukseen -> $ { x. Tila } ( $ { x. statusTeksti } ) ` ) ;

}

}

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

. sitten ( analysointitila )

. sitten ( x => x. json ( ) )

. sitten ( json => konsoli. Hirsi ( json ) )

. ottaa kiinni ( err => konsoli. Hirsi ( err ) ) ;

Tässä koodinpätkässä:

  • Määritä ensin funktio, jolla on ilmoitettu parametri, ennen kuin jäsennät vastauksen selviytyäksesi kohtaamista rajoituksista.
  • Lisää nyt ' tai muuten ”-lauseita heittääksesi ilmeisen virheen tai mukautetun rajoituksen.
  • Käytä sen jälkeen samalla tavalla ' hae() ”-menetelmä ja siihen liittyvät ”then()”-menetelmät tietojen hakemiseksi odottamalla vastausta, muuttamalla ne JSON-muotoon ja kirjautumalla konsoliin.
  • Lopuksi ajonaikaiset poikkeukset voidaan käsitellä asettamalla ' ottaa kiinni() ”menetelmä lupausketjun päässä.

Lähtö

Suorita lopuksi alla annettu cmdlet suorittaaksesi koodin ja heittääksesi poikkeukset:

solmuindeksi. mjs

Muut 'solmun haun' käyttötapaukset

' solmuhaku 'Voidaan käyttää myös' API-pyynnöt ' tai ' Verkkokaappaus ”. Keskustellaan näistä käyttötapauksista yksityiskohtaisesti.

Solmunhaun käyttö API-pyyntöjen tekemiseen

Sovellusliittymää voidaan vaatia useissa skenaarioissa kohdetietojen hakemiseen taustalähteen kautta. HTTP-pyynnöillä voi olla monia todennusmenetelmiä, kuten API-avaimen käyttö, jossa API-palveluntarjoaja tarjoaa avaimen, joka on rajoitettu vain käyttäjälle. Toinen tapa suojata API voi olla ' Perustodennus ', jossa on lähetettävä otsikko API:n kutsumiseksi.

Seuraavassa on esittely jälkimmäisestä lähestymistavasta eli 'perustodennusta' postipyynnössä '' hae() 'menetelmä:

( asynk ( ) => {

konst x = odottaa noutoa ( 'http://httpbin.org/post' , {

menetelmä : 'LÄHETTÄÄ' ,

otsikot : {

'Valtuutus' : `Perus $ { veli ( 'kirjautumissalasana' ) } `

} ,

kehon : JSON. kiristää ( {

'avain' : 'arvo'

} )

} ) ;

konst tulos = odota x. teksti ( ) ;

konsoli. Hirsi ( tulos ) ;

} ) ( ) ;

Yllä olevassa esittelyssä otsikko lähetetään ' base64 'koodattu merkkijono muodossa' kirjautumissalasana ”.

Node-fetch-toiminnon käyttö Web-kaappaukseen

' Verkkokaappaus ” viittaa tekniikkaan, jolla tiedot/sisältö haetaan sivustoilta ja jäsennetään. Tämä jäsentäminen tapahtuu ' cheerio ' kirjasto.

Alla on esittely sivun otsikon hakemisesta ' hae() 'menetelmä ja' cheerio ' kirjasto:

konst lib = vaatia ( 'hurrata' ) ;

( asynk ( ) => {

konst x = odottaa noutoa ( 'https://linuxhint.com/' ) ;

konst ja = odota x. teksti ( ) ;

konst $ = lib. ladata ( ja ) ;

konsoli. Hirsi ( $ ( 'titteli' ) . ensimmäinen ( ) . teksti ( ) ) ;

} ) ( ) ;

Tämä esimerkki hakee ruudun ' Linux 'sivuston otsikko.

Johtopäätös

HTTP-pyynnöt node.js:ssa voidaan tehdä solmun haulla lähettämällä get-pyyntöjä, hakemalla JSON-tietoja REST API:sta tai lähettämällä lähetyspyyntöjä. Myös poikkeuksia ja rajoituksia voidaan käsitellä tehokkaasti ' ottaa kiinni() ”-toiminto.