Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Web-Programmierung / Cro 101 / Exercises / Eine zweite Route

Lösung: Eine zweite Route

Hier ist eine mögliche Lösung der Aufgabe.

Code

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;
    }
}

🦋 Du findest den Quellcode in der Datei second-route.raku.

Ausgabe

Goodbye!

Kommentare

  1. Ein route-Block darf beliebig viele Routen enthalten; jedes get bearbeitet einen Pfad.

  2. Cro ordnet den Anfragepfad der richtigen Route zu, /hello und /bye liefern also ihre eigenen Antworten.

  3. Wie auf der Theorieseite kehrt .start sofort zurück, der abschließende react-Block hält das Programm also am Leben, bis Sie Strg-C drücken — whenever signal(SIGINT) hält dann den Server an und beendet die Reaktion.

Kursnavigation

Eine zweite Route   |   Status mit einem Client