Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Веб-программирование / Основы Cro / Exercises / Второй маршрут
Решение: Второй маршрут
Вот один из возможных вариантов решения задачи.
Код
use Cro::HTTP::Router;
use Cro::HTTP::Server;
my $application = route {
get -> 'hello' {
content 'text/plain', 'Hello from Cro!';
}
get -> 'bye' {
content 'text/plain', 'Goodbye!';
}
}
my $server = Cro::HTTP::Server.new(
:host('127.0.0.1'),
:port(8080),
:application($application),
);
$server.start;
say 'Listening on http://127.0.0.1:8080 — press Ctrl-C to stop';
react {
whenever signal(SIGINT) {
$server.stop;
done;
}
}🦋 Исходный код можно найти в файле second-route.raku.
Вывод
Goodbye!Комментарии
Блок
routeможет содержать сколько угодно маршрутов; каждыйgetобслуживает один путь.Cro сопоставляет путь запроса с нужным маршрутом, поэтому
/helloи/byeвозвращают каждый свой ответ.Как и на теоретической странице,
.startвозвращает управление немедленно, поэтому завершающий блокreactудерживает программу в живых, пока вы не нажмёте Ctrl-C: тогдаwhenever signal(SIGINT)останавливает сервер и завершает реакцию.