Node.js, Express i MongoDB

Why take this course?
Ćwiczenie: Tworzenie prostego serwera HTTP w Node.js
W tym ćwiczeniu przeprowadzimy prostą konfigurację serwera HTTP w Node.js, korzystając z modułu http
dostępnego w standardowej bibliotece Node.js. Po krok po kroku stworzymy aplikację, która będzie odpowiadać na żądania HTTP w wierszu poleceń.
Krok 1: Wymagane narzędzia i biblioteki
Upewnij się, że masz zainstalowane Node.js i npm (Node Package Manager). Możesz sprawdzić, czy Node.js jest zainstalowany, uruchomioną konsolę wpisując node -v
i sprawdzając wersję Node.js. Następnie upewnij się, że npm jest zainstalowany poprzez npm -v
.
Krok 2: Utworzenie projektu
Utwórz nowy katalog na swojem dyskcie i przesuń do niego w wierszu poleceń. Następnie inicjalizuj nowy projekt Node.js używając npm:
mkdir my-http-server
cd my-http-server
npm init -y
Krok 3: Instalacja i uruchomienie serwera HTTP
Zainstaluj moduł http
korzystając z npm:
npm install http
Następnie utwórz plik o nazwie server.js
w katalogu projektu i dodaj do niego poniższy kod, który tworzy podstawowy serwer HTTP:
const http = require('http'); // Import modułu http
const hostname = '127.0.0.1'; // Adres IP, na którym serwer będzie dostępny (lokalnie)
const port = 3000; // Port, na którym serwer będzie słuchać
const server = http.createServer((req, res) => { // Tworzymy serwer
res.statusCode = 200; // Ustawiamy kod statusu HTTP 200 (OK)
res.setHeader('Content-Type', 'text/plain'); // Ustawiamy typ treści
res.end('Hello World!\n'); // Wysylamy proste powitaliny
});
server.listen(port, hostname, () => { // Serwer słucha na podanym porcie i adresie IP
console.log(`Server running at http://${hostname}:${port}/`);
});
Uruchom serwer, uruchamiając powyższy skrypt z wiersza poleceń:
node server.js
Widzisz komunikat Server running at http://127.0.0.1:3000/
w konsoli. Oznacza to, że serwer HTTP jest uruchomiony i słucha na porcie 3000.
Krok 4: Testowanie serwera
Otwórz przeglądarkę internetową i weź wpisz http://127.0.0.1:3000/
. Powinieneś zobaczyć tekst "Hello World!" w odpowiedzi.
Krok 5: Rozbudowa o obsługę różnych metod HTTP i przekazywanie dynamicznego treści
Możesz rozbudować serwer, aby obsługiwać inne metody HTTP (GET, POST, PUT, DELETE) oraz aby przekazywał różne tresty w zależności od żądania. Przykład obsługi GET metody:
server.on('request', (req, res) => {
if (req.method === 'GET') { // Sprawdzamy, czy to żądanie GET
const message = 'Hello ' + req.url.split('/')[1] + '!'; // Personalizujemy odpowiedź na podstawie ścieżki żądania
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end(message);
} else {
res.writeHead(405, { 'Content-Type': 'text/plain' });
res.end('Method ' + req.method + ' not allowed!');
}
});
Teraz jeśli weź w przeglądarce http://127.0.0.1:3000/JohnDoe
, otrzymasz personalizowaną odpowiedź "Hello John Doe!".
Krok 6: Wersja z użyciem Express.js (opcjonalny)
Express.js to bardzo popularna i potężna framework na Node.js, który upraszcza tworzenie serwerów HTTP i API. Możesz zainstalować ją w swoim projekcie:
npm install express --save
A następnie utworzyć podobny serwer, ale z wykorzystaniem Express.js:
const express = require('express'); // Import modułu express
const app = express(); // Tworzymy aplikację Express
const port = 3001; // Rozsądzamy na innym porcie niż w poprzednim przypadku
app.get('/', (req, res) => { // Definiujemy rutę dla metody GET
res.send('Hello from Express!');
});
app.get('/:name', (req, res) => { // Definiujemy rutę z parametrem
const message = 'Hello ' + req.params.name + '!';
res.send(message);
});
app.listen(port, () => {
console.log(`Express server running at http://localhost:${port}/`);
});
Uruchom ten serwer na porcie 3001 i testuj go w przeglądarce, podobnie jak poprzedni.
Tym samym sposobem możesz rozbudować serwer o obsługę POST, PUT i DELETE metod HTTP oraz o złożone routingi, filtry, middleware'y i wielu innych funkcji dostępnych w Express.js.
Uwaga: W poniższych miesiącach do tego kursu dodajemy jeszcze bardziej zaawansowane tematy, takie jak pracowa z bazą danych MongoDB, tworzenie interfejsów API RESTful oraz wykorzystanie ramki Express.js w celu budowy pełnoprawnych aplikacji webowych i API. Zapraszam do dalszej eksploracji tych tematów!
Loading charts...