Opprett HTTP-webserver i Node.js med Code Eksempel
โก Smart oppsummering
Node.js bygger en fungerende webserver pรฅ noen fรฅ linjer ved hjelp av den innebygde http-modulen. Serveren lytter pรฅ en valgt port og svarer pรฅ hver forespรธrsel med en statuskode og brรธdtekst, mens separat kode henter data fra andre nettsteder.

Ocuco node.js Rammeverket brukes hovedsakelig til รฅ lage serverbaserte applikasjoner. Det kan enkelt brukes til รฅ bygge webservere som leverer innhold til brukere.
Flere moduler hรฅndterer serverrelaterte forespรธrsler, den innebygde http modulens fremste blant dem. Vi skal se pรฅ hvordan man lager en grunnleggende webserverapplikasjon ved hjelp av Node.js, og deretter hvordan man ber om data fra et annet nettsted.
Node som en webserver som bruker HTTP
La oss se pรฅ et eksempel pรฅ hvordan du oppretter og kjรธrer et fรธrste Node.js-program.
Applikasjonen oppretter en enkel servermodul som lytter pรฅ port 7000. Nรฅr en forespรธrsel sendes gjennom nettleseren pรฅ den porten, sender serveren en Hallo verden svar til klienten.
Code Forklaring
- Ocuco
requirefunksjonen leser en JavaScript filen, kjรธrer den og returnerer exports-objektet. Her laster den innhttpmodulen slik at funksjonaliteten er tilgjengelig i applikasjonen. - En serverapplikasjon opprettes fra en enkel funksjon. Funksjonen kjรธrer hver gang en forespรธrsel nรฅr serveren.
- Nรฅr en forespรธrsel mottas, sendes svaret med statusen 200Dette er standard statuskode i en HTTP-header for et vellykket svar.
- Selve svarsdelen er strengen Hallo verden.
server.listenfรฅr applikasjonen til รฅ lytte etter klientforespรธrsler pรฅ port 7000. Enhver tilgjengelig port kan brukes.
Hvis kommandoen kjรธres uten problemer, vises fรธlgende utdata i nettleseren.
Produksjon
Fra utdataene:
- Surfer til den lokale verten URL pรฅ port 7000 vises strengen Hallo verden pรฅ siden.
- Fordi koden spesifiserer port 7000, er utdataene bare synlige nรฅr man blar til den porten.
Her er koden for referanse:
var http = require('http'); var server = http.createServer(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Hello World\n"); }); server.listen(7000);
Hรฅndtering av GET-forespรธrsler i Node.js
Det er enkelt รฅ sende en GET-forespรธrsel for รฅ hente data fra et annet nettsted i Node.js. Historisk sett krevde dette request modul, installert fra kommandolinjen:
npm install request
Den kommandoen ber Node-pakkebehandleren om รฅ laste ned den nรธdvendige modulen og installere den. Nรฅr installasjonen er fullfรธrt, viser kommandolinjen navnet pรฅ den installerte modulen og versjonen i formen <name>@<version>.
I รธyeblikksbildet ovenfor, request modulen og versjonsnummeret ble lastet ned og installert.
Code Forklaring
- Ocuco
requestModulen som ble installert i forrige trinn, inneholder funksjonene som trengs for รฅ sende GET-forespรธrsler til nettsteder. - En GET-forespรธrsel sendes til et nettsted, og et tilbakekalling kjรธres nรฅr et svar kommer inn. Tilbakekallingen mottar tre parametere:
- Feil โ registrerer eventuelle feil som oppsto under forespรธrselen.
- Respons โ bรฆrer HTTP-overskriftene som returneres med svaret.
- Body โ inneholder hele innholdet i svaret.
- Innholdet som er mottatt i
bodyParameteren skrives til konsollen.
Her er koden for referanse:
var request = require("request"); request("https://example.com", function(error, response, body) { // Always check the error parameter before using the body if (error) { console.error("Request failed:", error.message); return; } console.log(body); });
โ ๏ธ Varsel om avskrivning: de request modulen var fullstendig avviklet i februar 2020 og mottar ingen ytterligere oppdateringer. Den installeres og kjรธrer fortsatt, sรฅ eksemplet ovenfor er fortsatt gyldig for eksisterende prosjekter, men npm install request skriver nรฅ ut en advarsel om avskrivning. Ny kode bรธr bruke den innebygde fetch funksjonen som vises i neste avsnitt.
Slik lager du HTTP-forespรธrsler med Native Fetch i Node.js
Node har inkludert en global fetch funksjon siden versjon 18, som samsvarer med API-et nettlesere allerede tilbyr. Ingen pakkeinstallasjon er nรธdvendig, og funksjonen returnerer et lรธfte, slik at den fungerer direkte med async/await.
// No require and no npm install needed on Node 18 or later async function getData() { try { const response = await fetch("https://example.com"); // fetch does NOT reject on 404 or 500 โ check ok yourself if (!response.ok) { throw new Error("HTTP status " + response.status); } const body = await response.text(); console.log(body); } catch (err) { // Network failures and the throw above both land here console.error("Request failed:", err.message); } } getData();
Tre forskjeller fra tilbakeringingsstilen er verdt รฅ merke seg. For det fรธrste, fetch avviser bare ved feil pรฅ nettverksnivรฅ; en HTTP 404 eller 500 lรธses fortsatt uten problemer, og det er derfor response.ok sjekk finnes, og hvorfor det รฅ utelate den er den vanligste feilen nรฅr man flytter fra requestFor det andre leveres ikke kroppen med responsen โ den mรฅ leses eksplisitt med response.text() for ren tekst eller response.json() for JSON, og hver av disse returnerer et eget lรธfte. For det tredje, fordi hele kallet er lรธftebasert, returnerer en enkelt try/catch dekker bรฅde forespรธrselen og brรธdteksten, og erstatter error-first callback-parameteren fullstendig.
For skript som mรฅ kjรธre pรฅ Node 16 eller tidligere, installer node-fetch or axios i stedet, siden begge eksponerer et sammenlignbart lรธftebasert grensesnitt og bare krever en endring av importlinjen nรฅr kjรธretiden er oppgradert.
forespรธrsel vs. hent vs. axios: Hvilken skal brukes
Tre HTTP-klienter dukker opp pรฅ tvers av mesteparten av Node-materialet, og bare รฉn av dem er en fornuftig standard for nytt arbeid. De varierer i vedlikeholdsstatus, om en avhengighet i det hele tatt er nรธdvendig, og hvordan hver enkelt signaliserer en feilstatus, sรฅ tabellen nedenfor setter dem side om side.
| Aspekt | anmode | hente (innebygd) | Axios |
|---|---|---|---|
| status | Utdatert siden 2020 | Opprettholdt i kjernen | Aktivt vedlikeholdt |
| Installasjon | npm-pakke | Ingen pรฅ node 18+ | npm-pakke |
| Stil | Feil โ fรธrste tilbakeringing | Promise | Promise |
| JSON-parsing | Manuell, eller et json-alternativ | Manuell via response.json() | Automatisk |
| Avviser pรฅ 404 eller 500 | Nei | Nei | Ja |
Bruk fetch for nye prosjekter pรฅ en gjeldende Node-versjon, siden den ikke legger til noen avhengighet og samsvarer med nettleser-API-et som utviklere allerede kjenner til. Velg axios nรฅr automatisk JSON-hรฅndtering, forespรธrselsavskjรฆrere eller avvisning ved feilstatuser ville lagret ekte kode. Behold request bare i eldre applikasjoner som allerede er avhengige av den, og som planlegger รฅ erstatte den.
Vanlige Node.js-serverfeil og hvordan du fikser dem
De fleste feilene nรฅr man starter en fรธrste Node-server kommer fra porter, stier eller manglende svar, snarere enn fra selve serverkoden.
- BRUKSANVISNING: en annen prosess holder allerede porten. Kjรธr
netstat -ano | findstr :7000on Windowsellerlsof -i :7000on macOS og Linux, og stopp deretter den prosessen eller velg en annen port. - EACCES pรฅ lav havn: Porter under 1024 trenger forhรธyede rettigheter. Bruk en port over 1024 under utvikling, for eksempel 3000 eller 7000.
- Nettleseren henger seg og lastes aldri: behandleren ringte aldri
response.end()Forbindelsen forblir รฅpen til den fรฅr tidsavbrudd, sรฅ hver bane gjennom behandleren mรฅ avslutte svaret. - Finner ikke modulen 'http': Filnavnet var feilstavet, eller skriptet kjรธrer i en nettleser i stedet for Node. Kjernemoduler trenger ingen installasjon.
- Endringer vises ikke: Noden laster inn filen รฉn gang ved oppstart. Start prosessen pรฅ nytt etter hver redigering, eller kjรธr den under en overvรฅker som f.eks.
node --watch server.js.




