Izradite HTTP web poslužitelj u Node.js-u pomoću Code Primjer
⚡ Pametni sažetak
Node.js gradi funkcionalan web poslužitelj u nekoliko redaka koristeći ugrađeni http modul. Poslužitelj osluškuje odabrani port i odgovara na svaki zahtjev statusnim kodom i tijelom, dok zaseban kod dohvaća podatke s drugih web-mjesta.

The Node.js Framework se uglavnom koristi za izradu poslužiteljskih aplikacija. Može se lako koristiti za izgradnju web poslužitelja koji korisnicima poslužuju sadržaj.
Nekoliko modula obrađuje zahtjeve povezane s poslužiteljem, ugrađeni http modul glavni među njima. Pogledat ćemo kako stvoriti osnovnu aplikaciju web poslužitelja pomoću Node.js-a, a zatim kako zatražiti podatke s druge stranice.
Čvor kao web poslužitelj koji koristi HTTP
Pogledajmo primjer kako stvoriti i pokrenuti prvu Node.js aplikaciju.
Aplikacija stvara jednostavan poslužiteljski modul koji osluškuje port 7000. Kada se zahtjev uputi putem preglednika na tom portu, poslužitelj šalje Pozdrav svijete odgovor klijentu.
Code Objašnjenje
- The
requirefunkcija čita JavaScript datoteku, izvršava je i vraća njezin objekt izvoza. Ovdje učitavahttpmodul tako da je njegova funkcionalnost dostupna u aplikaciji. - Serverska aplikacija se stvara iz jednostavne funkcije. Ta se funkcija izvršava svaki put kada zahtjev stigne do servera.
- Kada se primi zahtjev, odgovor se šalje sa statusom 200Ovo je standardni statusni kod u HTTP zaglavlju za uspješan odgovor.
- Samo tijelo odgovora je niz znakova Pozdrav svijete.
server.listenomogućuje aplikaciji da osluškuje zahtjeve klijenata na portu 7000. Može se koristiti bilo koji dostupan port.
Ako se naredba uspješno pokrene, u pregledniku se pojavljuje sljedeći izlaz.
Izlaz
Iz izlaza:
- Pregledavanje lokalnog hosta URL na portu 7000 prikazuje niz Pozdrav svijete na stranici.
- Budući da kod specificira port 7000, izlaz je vidljiv samo prilikom pregledavanja tog porta.
Evo koda za referencu:
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);
Rukovanje GET zahtjevima u Node.js
Izrada GET zahtjeva za dohvaćanje podataka s druge stranice je jednostavna u Node.js-u. Povijesno gledano, ovo je zahtijevalo request modul, instaliran iz naredbenog retka:
npm install request
Ta naredba traži od Node upravitelja paketa da preuzme potreban modul i instalira ga. Kada instalacija uspije, naredbeni redak prikazuje naziv i verziju instaliranog modula u obliku <name>@<version>.
Na gornjoj snimci, request Modul i njegov broj verzije su preuzeti i instalirani.
Code Objašnjenje
- The
requestModul instaliran u prethodnom koraku pruža funkcije potrebne za slanje GET zahtjeva web stranicama. - GET zahtjev se šalje web-mjestu, a povratni poziv se pokreće nakon što stigne odgovor. Povratni poziv prima tri parametra:
- greška — bilježi svaku grešku koja se pojavila prilikom podnošenja zahtjeva.
- Odgovor — prenosi HTTP zaglavlja vraćena s odgovorom.
- Tijelo — sadrži cijeli sadržaj odgovora.
- Sadržaj primljen u
bodyParametar se zapisuje u konzolu.
Evo koda za referencu:
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); });
⚠️ Obavijest o ukidanju: o request modul je bio potpuno zastarjelo u veljači 2020. i ne prima daljnja ažuriranja. I dalje se instalira i pokreće, tako da gornji primjer ostaje valjan za postojeće projekte, ali npm install request sada ispisuje upozorenje o zastarivanju. Novi kod treba koristiti ugrađenu fetch funkcija prikazana u sljedećem odjeljku.
Kako napraviti HTTP zahtjeve s izvornim dohvaćanjem u Node.js-u
Čvor je uključio globalno fetch funkcija od verzije 18, koja odgovara API-jima koje preglednici već pružaju. Nije potrebna instalacija paketa, a funkcija vraća obećanje, tako da radi izravno s 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();
Vrijedi napomenuti tri razlike u odnosu na stil povratnog poziva. Prvo, fetch odbija samo u slučaju kvara na razini mreže; HTTP 404 ili 500 se i dalje uspješno rješava, zbog čega response.ok provjera postoji i zašto je njezino izostavljanje najčešća greška pri prelasku s requestDrugo, tijelo se ne isporučuje s odgovorom — mora se eksplicitno pročitati s response.text() za običan tekst ili response.json() za JSON, a svaki od njih vraća vlastito obećanje. Treće, budući da je cijeli poziv temeljen na obećanju, jedan try/catch pokriva i zahtjev i pročitano tijelo, u potpunosti zamjenjujući parametar povratnog poziva za grešku prvo.
Za skripte koje se moraju pokretati na Node 16 ili starijoj verziji, instalirajte node-fetch or axios umjesto toga, budući da oba otkrivaju usporedivo sučelje temeljeno na obećanjima i zahtijevaju samo promjenu u liniji uvoza nakon što se runtime nadogradi.
zahtjev vs. dohvat vs. axios: koji koristiti
Tri HTTP klijenta pojavljuju se u većini Node materijala, a samo jedan od njih je razuman zadani način za novi rad. Razlikuju se po statusu održavanja, po tome je li uopće potrebna ovisnost i po tome kako svaki od njih signalizira status pogreške, pa ih donja tablica postavlja jedan pored drugog.
| Aspekt | zatražiti | dohvati (ugrađeno) | aksios |
|---|---|---|---|
| Status | Zastarjelo od 2020. | Održava se u jezgri | Aktivno održavano |
| Montaža | npm paket | Nema na čvoru 18+ | npm paket |
| Stil | Povratni poziv s prvom greškom | Obećanje | Obećanje |
| JSON parsiranje | Ručno ili JSON opcija | Ručno putem response.json() | Automatski |
| Odbijanja na 404 ili 500 | Ne | Ne | Da |
Koristiti fetch za nove projekte na trenutnoj verziji Nodea, budući da ne dodaje nikakvu ovisnost i podudara se s API-jem preglednika koji programeri već znaju. Odaberite axios kada bi automatska obrada JSON-a, presretači zahtjeva ili odbijanje pri statusima grešaka spasili pravi kod. Zadržite request samo unutar naslijeđenih aplikacija koje već ovise o njemu i planiraju ga zamijeniti.
Uobičajene pogreške Node.js servera i kako ih ispraviti
Većina kvarova pri pokretanju prvog Node servera dolazi od portova, putanja ili nedostajućeg odgovora, a ne od samog koda servera.
- UPOTREBA EADDRINESA: drugi proces već drži port. Pokreni
netstat -ano | findstr :7000on Windows, ililsof -i :7000on macOS i Linux, a zatim zaustavite taj proces ili odaberite drugi port. - EACCES na niskom priključku: Portovi ispod 1024 zahtijevaju povišene privilegije. Tijekom razvoja koristite port iznad 1024, kao što su 3000 ili 7000.
- Preglednik se zamrzava i nikad se ne učitava: voditelj nikad nije nazvao
response.end()Veza ostaje otvorena dok ne istekne vrijeme, tako da svaki put kroz rukovatelj mora završiti odgovor. - Ne mogu pronaći modul 'http': Naziv datoteke je krivo napisan ili se skripta izvršava u pregledniku, a ne u Nodeu. Moduli za Core ne trebaju instalaciju.
- Promjene se ne prikazuju: Čvor učitava datoteku jednom pri pokretanju. Ponovno pokrenite proces nakon svakog uređivanja ili ga pokrenite pod nadzorom kao što je
node --watch server.js.




