Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Web-Programmierung / Ein einfacher HTTP-Server / Exercises / Den Pfad in Großbuchstaben
Lösung: Den Pfad in Großbuchstaben
Hier ist eine mögliche Lösung der Aufgabe.
Code
my $listener = IO::Socket::INET.new(
:listen,
:localhost('127.0.0.1'),
:localport(8080),
);
loop {
my $conn = $listener.accept;
my $request = $conn.recv;
# "GET /hello HTTP/1.0" — the path is the second word; drop the leading '/'
my $reply = $request.lines.first.words[1].substr(1).uc;
$conn.print("HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\n$reply\n");
$conn.close;
}🦋 Du findest den Quellcode in der Datei text-response.raku.
Ausgabe
HELLOKommentare
.recvliest die Anfrage. Ihre erste Zeile lautetGET /hello HTTP/1.0;.words[1]greift/helloheraus, und.substr(1)lässt den führenden Schrägstrich weg, sodasshellobleibt..ucschreibt es groß, und das wird zum Rumpf der Antwort. Die Antwort hängt nun davon ab, wonach der Client gefragt hat — der Server verarbeitet die Anfrage und liefert keine feste Zeichenkette.Der ganze Block aus annehmen-lesen-antworten sitzt in einer
loop, der Server beantwortet also eine Anfrage nach der anderen, statt nach der ersten aufzuhören. Halten Sie ihn mit Strg-C an.