Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Webprogrammeren / Een eenvoudige HTTP-server / Exercises / Het pad in hoofdletters
Oplossing: Het pad in hoofdletters
Hier is een mogelijke oplossing voor de taak.
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;
}🦋 Je kunt de broncode vinden in het bestand text-response.raku.
Uitvoer
HELLOOpmerkingen
.recvleest het verzoek. De eerste regel ervan isGET /hello HTTP/1.0;.words[1]vist/helloeruit, en.substr(1)laat de voorafgaande schuine streep vallen zodathellooverblijft..uczet het in hoofdletters, en dat wordt de body van het antwoord. Het antwoord hangt nu af van wat de client vroeg — de server verwerkt het verzoek en geeft geen vaste string terug.Het hele blok accepteren-lezen-antwoorden zit in een
loop, dus beantwoordt de server het ene verzoek na het andere in plaats van na het eerste te stoppen. Stop hem met Ctrl-C.