Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione web / Un semplice server HTTP / Exercises / Il percorso in maiuscolo
Soluzione: Il percorso in maiuscolo
Ecco una possibile soluzione del compito.
Codice
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;
}🦋 Trova il programma nel file text-response.raku.
Output
HELLOCommenti
.recvlegge la richiesta. La sua prima riga èGET /hello HTTP/1.0;.words[1]estrae/hello, e.substr(1)toglie la barra iniziale lasciandohello..uclo rende maiuscolo, e quello diventa il corpo della risposta. La risposta dipende ora da ciò che il client ha chiesto: il server sta elaborando la richiesta, non restituendo una stringa fissa.L’intero blocco accetta-leggi-rispondi sta dentro un
loop, quindi il server risponde a una richiesta dopo l’altra invece di fermarsi dopo la prima. Fermalo con Ctrl-C.