Verwendung des Node.js-HTTP-Moduls

Verwendung des Node.js-HTTP-Moduls

Vorwort

Der Zweck der Node.js-Entwicklung besteht darin, Webserverprogramme in JavaScript zu schreiben. Da JavaScript tatsächlich das browserseitige Scripting dominiert, liegt sein Vorteil darin, dass es über die weltweit größte Zahl an Front-End-Entwicklern verfügt. Wenn Sie die Front-End-Entwicklung in JavaScript bereits beherrschen und anschließend lernen, wie Sie JavaScript in der Back-End-Entwicklung anwenden, können Sie ein echter Full-Stack-Entwickler werden.

HTTP

Um zu verstehen, wie ein Webserverprogramm funktioniert, müssen wir zunächst ein grundlegendes Verständnis des HTTP-Protokolls haben. Wenn Sie mit dem HTTP-Protokoll nicht vertraut sind, sehen Sie sich zunächst die Einführung in das HTTP-Protokoll an.

HTTP-Server

Es ist unrealistisch, ein HTTP-Serverprogramm zu entwickeln, TCP-Verbindungen zu verarbeiten und HTTP von Grund auf zu analysieren. Diese Aufgaben wurden tatsächlich vom http-Modul erledigt, das mit Node.js geliefert wird. Die Anwendung beschäftigt sich nicht direkt mit dem HTTP-Protokoll, sondern bedient die vom HTTP-Modul bereitgestellten Anforderungs- und Antwortobjekte.

Das Anforderungsobjekt kapselt die HTTP-Anforderung. Wir können alle Informationen der HTTP-Anforderung abrufen, indem wir die Eigenschaften und Methoden des Anforderungsobjekts aufrufen.

Das Antwortobjekt kapselt die HTTP-Antwort. Indem wir die Methoden des Antwortobjekts bedienen, können wir die HTTP-Antwort an den Browser zurückgeben.

Mit Node.js ist es sehr einfach, ein HTTP-Serverprogramm zu implementieren. Lassen Sie uns ein einfaches Webprogramm implementieren, hello.js, das für alle Anfragen „Hallo Welt!“ zurückgibt:

„streng verwenden“;
var http = require('http'); // Importieren Sie das HTTP-Modul. // Erstellen Sie einen HTTP-Server und übergeben Sie die Rückruffunktion. Die Callback-Funktion empfängt die Anfrage- und Antwortobjekte var server = http.createServer(function (request, response){
console.log(request.method + ': ' + request.url); // Methode und URL der HTTP-Anfrage abrufen:
response.writeHead(200, {'Content-Type': 'text/html'}); // Schreibe die HTTP-Antwort 200 in die Antwort und setze den Content-Type: text/html
response.end('<h1>Hallo Welt!</h1>'); });// Schreibe den HTML-Inhalt der HTTP-Antwort in response
server.listen(8080); // Lassen Sie den Server auf Port 8080 lauschen. console.log('Der Server läuft unter http://127.0.0.1:8080/');

Wenn Sie das Programm in der Eingabeaufforderung ausführen, wird die folgende Ausgabe angezeigt:

$ node hello.js Der Server läuft unter http://127.0.0.1:8080/

Schließen Sie die Eingabeaufforderung nicht, öffnen Sie den Browser und geben Sie http://localhost:8080 ein, um die Serverantwort anzuzeigen:

Gleichzeitig können Sie im Eingabeaufforderungsfenster die vom Programm gedruckten Anforderungsinformationen sehen:

ERHALTEN: /

ERHALTEN: /favicon.ico

Dies ist unser erstes HTTP-Serverprogramm!

Dateiserver

Lassen Sie uns das obige Webprogramm weiter ausbauen. Wir können ein Verzeichnis einrichten und das Webprogramm in einen Dateiserver verwandeln. Um dies zu erreichen, müssen wir nur den Pfad in request.url analysieren, dann die entsprechende Datei lokal finden und den Dateiinhalt senden.

Zum Parsen von URLs ist das von Node.js bereitgestellte URL-Modul erforderlich. Es ist sehr einfach zu verwenden. Es parst einen String durch parse() in ein URL-Objekt:

„streng verwenden“;
var url = erforderlich('url');

console.log(url.parse('http://user:[email protected]:8080/Pfad/zur/Datei?query=string#hash'));

Die Ergebnisse sind wie folgt:

URL { Protokoll: „http:“, Schrägstriche: „true“, Authentifizierung: „Benutzer:Passwort“, Host: „host.com:8080“, Port: „8080“, Hostname: „host.com“, Hash: „#hash“, Suche: „?Abfrage=Zeichenfolge“, Abfrage: „Abfrage=Zeichenfolge“, Pfadname: „/Pfad/zur/Datei“, Pfad: „/Pfad/zur/Datei?Abfrage=Zeichenfolge“, href: „http://Benutzer:[email protected]:8080/Pfad/zur/Datei?Abfrage=Zeichenfolge#Hash“ }

Um lokale Dateiverzeichnisse zu verarbeiten, müssen Sie das von Node.js bereitgestellte Pfadmodul verwenden, mit dem sich problemlos Verzeichnisse erstellen lassen:

„streng verwenden“;
var Pfad = erforderlich('Pfad');
var workDir = path.resolve('.'); // Aktuelles Verzeichnis auflösen ('/Users/michael')
var filePath = path.join(workDir, 'pub', 'index.html'); // Kombiniere den vollständigen Dateipfad: aktuelles Verzeichnis + 'pub' + 'index.html' ('/Users/michael/pub/index.html')

Verwenden Sie das Pfadmodul, um betriebssystemabhängige Dateipfade korrekt zu behandeln. Unter Windows ähnelt der zurückgegebene Pfad C:\Users\michael\static\index.html, sodass wir uns nicht um die Verkettung der Pfade kümmern müssen.

Abschließend implementieren wir einen Dateiserver file_server.js:

„streng verwenden“;
var fs = erforderlich('fs'),url = erforderlich('URL'),Pfad = erforderlich('Pfad'),http = erforderlich('http');
var root = path.resolve(process.argv[2] || '.'); // Stammverzeichnis aus den Kommandozeilenparametern abrufen, Standard ist das aktuelle Verzeichnis console.log('Statisches Stammverzeichnis: ' + root);
var server = http.createServer(function (request, response){// Server erstellen var pathname = url.parse(request.url).pathname;// Pfad der URL abrufen, ähnlich wie „/css/bootstrap.css“
var filepath = path.join(root, pathname); // Den entsprechenden lokalen Dateipfad abrufen, ähnlich wie „/srv/www/css/bootstrap.css“
fs.stat(filepath, function (err, stats) {if (!err && stats.isFile()) {// Datei abrufen statusconsole.log('200 ' + request.url);// Kein Fehler und Datei vorhandenresponse.writeHead(200);// 200-Antwort senden// Dateistream zur Antwort weiterleiten:
fs.createReadStream(Dateipfad).Pipe(Antwort);    

} anders {
console.log('404 ' + request.url); // Fehler oder Datei existiert nicht response.writeHead(404); response.end('404 Nicht gefunden'); } }); }); // 404-Antwort senden server.listen(8080);

console.log('Der Server läuft unter http://127.0.0.1:8080/');

Es ist nicht erforderlich, den Dateiinhalt manuell zu lesen. Da das Antwortobjekt selbst ein Writable Stream ist, kann mit der Methode pipe() der Dateiinhalt automatisch ausgelesen und in der HTTP-Antwort ausgegeben werden.

Führen Sie node file_server.js /path/to/dir in der Befehlszeile aus, ändern Sie /path/to/dir in ein gültiges Verzeichnis auf Ihrem lokalen Computer und geben Sie dann http://localhost:8080/index.html in den Browser ein:

Solange die Datei index.html im aktuellen Verzeichnis vorhanden ist, kann der Server den Dateiinhalt an den Browser senden. Beachten Sie die Konsolenausgabe:

200 /index.html

200 /css/uikit.min.css

200 /js/jquery.min.js

200 /Schriftarten/fontawesome-webfont.woff2

Bei der ersten Anforderung fordert der Browser die Seite index.html an. Nachfolgende Anforderungen sind Anforderungen für andere Ressourcen, die der Browser nach der Analyse des HTML sendet.

üben

Bei der Eingabe von http://localhost:8080/ im Browser wird die Fehlermeldung 404 zurückgegeben, da das Programm erkennt, dass es sich bei der HTTP-Anfrage nicht um eine Datei, sondern um ein Verzeichnis handelt. Bitte ändern Sie file_server.js. Wenn der angeforderte Pfad ein Verzeichnis ist, wird automatisch nacheinander nach index.html und default.html im Verzeichnis gesucht. Wenn diese gefunden werden, wird der Inhalt der HTML-Datei zurückgegeben.

Referenzquellcode

http-Servercode (einschließlich statischer Website)

https://github.com/michaelliao/learn-javascript/tree/master/samples/node/http

Oben wird die detaillierte Verwendung des http-Moduls von Node.js beschrieben. Weitere Informationen zu Node.js finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Node.js – Erste Schritte mit dem URL-Modul
  • Tiefgreifendes Verständnis des node.js-Pfadmoduls
  • Eine kurze Einführung in das HTTP-Modul und das URL-Modul in node.js
  • Tiefgreifendes Verständnis des http-Moduls von node.js
  • Wie viel wissen Sie über das node.js-path-Modul
  • Node.js-Grundlagen: Pfadmodul, URL-Modul und detaillierte Erklärung zur Verwendung des http-Moduls

<<:  Detailliertes Tutorial zur Installation von ElasticSearch 6.x im Docker

>>:  Detaillierte Erklärung der MySQL-Syntax, Sonderzeichen und regulären Ausdrücke

Artikel empfehlen

Es ist ganz einfach zu verstehen, was Node.js ist

Inhaltsverzeichnis Offizielle Einführung in Node....

Tastenkombinationsvorgang für SQL Server-Kommentare

Batchkommentare in SQL Server Batch-Annotation St...

MySQL wählt die richtige Speicher-Engine

Wenn es um Datenbanken geht, ist eine der am häuf...

MySQL 8.0-Installationstutorial unter Linux

Dieser Artikel beschreibt Ihnen, wie Sie MySQL 8....

JavaScript zum Erzielen eines einfachen Countdown-Effekts

In diesem Artikelbeispiel wird der spezifische Co...

React implementiert den Beispielcode der Radiokomponente

Ziel dieses Artikels ist es, die Grundfunktionen ...

HTML ist die zentrale Grundlage für die Entwicklung von WEB-Standards

HTML-zentrierte Front-End-Entwicklung entspricht p...

Implementieren eines Webplayers mit JavaScript

Heute zeige ich Ihnen, wie Sie mit JavaScript ein...

So führen Sie den Top-Befehl im Batchmodus aus

Der Befehl „top“ ist der beste Befehl, den jeder ...

Erklärung der Funktionsweise und Verwendung von Redux

Inhaltsverzeichnis 1. Was ist Redux? 2. Das Redux...