Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Веб-програмування / Простий HTTP-сервер / Вправи / Шлях у верхньому регістрі
Розв’язання: Шлях у верхньому регістрі
Ось одне з можливих розв’язань задачі.
Код
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" — шлях є другим словом; відкидаємо початкову '/'
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;
}🦋 Знайдіть програму у файлі text-response.raku.
Вивід
HELLOКоментарі
.recvчитає запит. Його першим рядком єGET /hello HTTP/1.0;.words[1]вибирає/hello, а.substr(1)відкидає початкову скісну риску, лишаючиhello..ucпереводить його у верхній регістр, і це стає тілом відповіді. Тепер відповідь залежить від того, що попросив клієнт, — сервер обробляє запит, а не повертає сталий рядок.Увесь блок «прийми—прочитай—відповідай» сидить усередині
loop, тож сервер відповідає на запит за запитом, а не зупиняється після першого. Спиніть його через Ctrl-C.