Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Уеб програмиране / Прост HTTP сървър / Exercises / Пътят с главни букви
Решение: Пътят с главни букви
Ето едно възможно решение на задачата.
Код
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.