Pistache i RapidJSON - przekazywanie zmiennych w URL
Po przykładzie, w którym pokazałem jak odczytać plik i przesłać jego zawartość jako odpowiedź webserwisu w Pistache, czas na przykład jak odebrać od użytkownika zmienną i na jej podstawie przygotować odpowiedź.
Zmienne w URL
Rejestrowanie endpointów zawierających zmienne jest banalnie proste. Wygląda to identycznie jak rejestrowanie każdej innej metody webserwisu, z tym wyjątkiem że w miejscach w których spodziewamy się od użytkownika użycia zmiennej definiujemy zaślepkę:
Routes::Get(router, "/drugs/:id", Routes::bind(&DrugHandler::onRequest, &drug_handler));
W powyższym przykładzie spodziewam się że użytkownik w celu pobrania informacji o konkretnym leku poda jego identyfikator w miejscu oznaczonym jako :id. Każda zaślepka w Pistache wyróżniona musi zostać poprzez dodanie znaku dwukropka przed jej nazwą.
Odbieranie nazwanej zmiennej w metodzie obsługi webserwisu także jest bardzo proste:
auto id = request.param(":id").as<std::string>();
Z obiektu request pobieramy parametr “:id” jako string. Od tego momentu możemy w programie używać zmiennej id do której przypisana jest wartość podana przez użytkownika webserwisu.
Istnieje także możliwość odbierania zmiennych bez podawania ich nazw, podając kolejne pozycje w sekwencji zaślepek.
Pokazane w tym wpisie przykłady są zaczerpnięte z aplikacji DDS.