Looge Node.js-is HTTP-veebiserver koos Code Näide
⚡ Nutikas kokkuvõte
Node.js loob sisseehitatud http-mooduli abil mõne reaga toimiva veebiserveri. Server kuulab valitud porti ja vastab igale päringule olekukoodi ja sisuga, samal ajal kui eraldi kood hangib andmeid teistelt saitidelt.

. Node.js raamistikku kasutatakse enamasti serveripõhiste rakenduste loomiseks. Seda saab hõlpsasti kasutada veebiserverite loomiseks, mis pakuvad kasutajatele sisu.
Serveriga seotud päringuid käsitlevad mitmed moodulid, sisseehitatud http mooduli juht neist. Vaatame, kuidas luua Node.js-i abil lihtne veebiserveri rakendus ja seejärel, kuidas teiselt saidilt andmeid taotleda.
Sõlm HTTP-d kasutava veebiserverina
Vaatame näidet, kuidas luua ja käivitada esimene Node.js rakendus.
Rakendus loob lihtsa serverimooduli, mis kuulab porti 7000. Kui sellel portil tehakse brauseri kaudu päring, saadab server Tere maailm vastus kliendile.
Code Selgitus
- .
requirefunktsioon loeb a JavaScript faili, käivitab selle ja tagastab oma ekspordiobjekti. Siin laadib seehttpmoodul, nii et selle funktsionaalsus on rakenduses saadaval. - Serverirakendus luuakse lihtsa funktsiooni abil. See funktsioon käivitub iga kord, kui serverisse jõuab päring.
- Kui päring on laekunud, saadetakse vastus staatusega 200See on HTTP päises olev standardne olekukood eduka vastuse korral.
- Vastuse sisu ise on string Tere maailm.
server.listenpaneb rakenduse kuulama kliendi päringuid pordil 7000. Kasutada võib mis tahes saadaolevat porti.
Kui käsk edukalt käivitatakse, kuvatakse brauseris järgmine väljund.
Väljund
Väljundist:
- Kohaliku hosti sirvimine URL pordil 7000 kuvab stringi Tere maailm lehel.
- Kuna kood määrab pordi 7000, on väljund nähtav ainult selle pordi sirvimisel.
Siin on viitamiseks kood:
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);
GET-i taotluste käsitlemine Node.js-s
GET-päringu tegemine andmete hankimiseks teiselt saidilt on Node.js-is lihtne. Varem oli selleks vaja request moodul, mis on installitud käsurealt:
npm install request
See käsk palub Node'i paketihalduril alla laadida ja installida vajalik moodul. Kui installimine õnnestub, kuvatakse käsureal installitud mooduli nimi ja versioon kujul <name>@<version>.
Ülaltoodud hetktõmmises on request moodul ja selle versiooninumber laaditi alla ja installiti.
Code Selgitus
- .
requestEelmises etapis installitud moodul pakub funktsioone, mis on vajalikud veebisaitidele GET-päringute tegemiseks. - Saidile esitatakse GET-päring ja vastuse saabumisel toimub tagasihelistamine. Tagasihelistamine saab kolm parameetrit:
- viga — registreerib kõik päringu esitamisel ilmnenud vead.
- Vastus — kannab vastusega tagastatud HTTP päiseid.
- Keha — sisaldab vastuse kogu sisu.
- Saadud sisu
bodyparameeter kirjutatakse konsooli.
Siin on viitamiseks kood:
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); });
⚠️ Toetuse lõpetamise teade: the,en request moodul oli täielikult aegunud 2020. aasta veebruaris ja ei saa edasisi värskendusi. See installitakse ja töötab endiselt, seega jääb ülaltoodud näide kehtima ka olemasolevate projektide jaoks, kuid npm install request kuvab nüüd aegumise hoiatuse. Uus kood peaks kasutama sisseehitatud fetch funktsioon, mida on näidatud järgmises osas.
Kuidas teha HTTP-päringuid natiivse toomisega Node.js-is
Sõlm on lisanud globaalse fetch funktsioon alates versioonist 18, mis vastab brauserite juba pakutavale API-le. Paketti pole vaja installida ja funktsioon tagastab lubaduse, seega töötab see otse 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();
Kolm erinevust tagasihelistamise stiilist väärivad märkimist. Esiteks, fetch lükkab tagasi ainult võrgutaseme rikke korral; HTTP 404 või 500 lahendab ikkagi edukalt, mistõttu response.ok kontroll on olemas ja miks selle väljajätmine on kõige levinum viga kolimisel requestTeiseks, vastusega ei kaasne sisu – seda tuleb lugeda selgesõnaliselt koos vastusega. response.text() lihtteksti või response.json() JSON-i jaoks ja igaüks neist tagastab omaenda lubaduse. Kolmandaks, kuna kogu kutse on lubaduspõhine, siis üks try/catch hõlmab nii päringu kui ka sisu lugemist, asendades täielikult error-first tagasihelistusparameetri.
Skriptide puhul, mis peavad töötama Node 16-s või varasemas versioonis, installige node-fetch or axios selle asemel, kuna mõlemad pakuvad võrreldavat lubaduspõhist liidest ja nõuavad pärast käituskeskkonna uuendamist ainult impordirea muutmist.
päring vs toomine vs axios: millist kasutada
Enamikus Node'i materjalides esineb kolm HTTP-klienti ja ainult üks neist on uue töö jaoks mõistlik vaikeväärtus. Need erinevad hooldusoleku, selle poolest, kas sõltuvust on üldse vaja, ja selle poolest, kuidas igaüks neist veaolekut annab, seega on allolev tabel need kõrvuti asetanud.
| Aspekt | taotleda | toomine (sisseehitatud) | aksioosid |
|---|---|---|---|
| olek | Aegunud alates 2020. aastast | Säilitatakse südamikus | Aktiivselt hooldatud |
| paigaldamine | npm pakett | Puudub sõlmel 18+ | npm pakett |
| STIIL | Vea-esimene tagasihelistamine | Lubadus | Lubadus |
| JSON-i parsimine | Manuaalne või JSON-valik | Manuaalne response.json() kaudu | Automaatne |
| Keeldub 404 või 500 korral | Ei | Ei | Jah |
Kasutama fetch uute projektide jaoks praeguses Node'i versioonis, kuna see ei lisa sõltuvust ja vastab brauseri API-le, mida arendajad juba teavad. Valige axios kui automaatne JSON-i käsitlemine, päringute pealtkuulajad või veaolekute korral tagasilükkamine salvestaksid päris koodi. Hoidke request ainult pärandrakendustes, mis sellest juba sõltuvad ja plaanivad selle välja vahetada.
Levinumad Node.js serveri vead ja kuidas neid parandada
Enamik esimese sõlmeserveri käivitamisel tekkivatest tõrgetest tulenevad pigem portidest, teedest või puuduvast vastusest kui serveri koodist endast.
- TÄHELEPANU KASUTAMINE: Teine protsess juba hoiab porti. Käivita
netstat -ano | findstr :7000on Windowsvõilsof -i :7000on macOS ja Linux, siis peatage see protsess või valige mõni muu port. - EACCES madala pordi korral: Portidele alla 1024 on vaja kõrgendatud õigusi. Kasutage arenduse ajal porti üle 1024, näiteks 3000 või 7000.
- Brauser hangub ja ei lae kunagi: käitleja ei helistanud kunagi
response.end()Ühendus jääb avatuks kuni ajalõpuni, seega peab iga tee läbi käitleja vastuse lõpetama. - Moodulit 'http' ei leitud: failinimi oli valesti kirjutatud või skript töötab brauseris, mitte Node'is. Põhimoodulid ei vaja installimist.
- Muudatusi ei kuvata: Sõlm laadib faili käivitamisel üks kord. Taaskäivitage protsess pärast iga muudatust või käivitage see jälgija all, näiteks
node --watch server.js.




