Styl REST
W ramach laboratorium zostanie opracowany serwis wykorzystujący API REST oraz wykorzystujący dokumentową bazę danych MonogoDB. Część serwerowa zostanie opracowana w języku php a cześć klienta z wykorzystaniem języka JavaScript i technologii AJAX.
- Odseparowanie części serwerowej od klienta
- API typu REST służą do budowania wysoce skalowalnych, ale prostych aplikacji WWW. Odseparowanie klienta od API, a zarazem zachowanie ścisłej struktury API ułatwia aplikacjom klienta wysyłanie żądań o zasoby bez możliwości wywoływania baz danych ani uruchamiania logiki działającej po stronie serwera.
- Aplikacja serwerowa jest bezstanowa
- Zgodnie z projektem API typu REST przyjmują tylko dane wejściowe i zwracają dane wyjściowe. Nie mogą przechowywać żadnego stanu związanego z połączeniem z klientem. Nie oznacza to jednak, że API typu REST nie mogą służyć do uwierzytelniania i autoryzacji. Mechanizm autoryzacji powinien umożliwiać korzystanie z tokenów wysyłanych w każdym żądaniu.
- Powinno umożliwiać zapisywanie w danych pamięci podręcznej
- Aby odpowiednio skalować aplikacje internetowe, API typu REST muszą z łatwością oznaczać odpowiedzi jako możliwe/niemożliwe do zapisania w pamięci podręcznej. Ponieważ REST ściśle definiuje, jakie dane będą zwracane za pośrednictwem określonych punktów końcowych, mechanizm ten można z łatwością skonfigurować w przypadku poprawnie zaprojektowanych API typu REST. W idealnym rozwiązaniu pamięć podręczna powinna być zarządzana z poziomu oprogramowania, w taki sposób, aby uniemożliwiać przypadkowe przechwycenie uprzywilejowanych informacji przez innego użytkownika.
- Punkt końcowy powinien definiować określony obiekt lub metodę
- Zwykle są one definiowane hierarchicznie, np. /zasob/id/20210103. Dzięki temu w API typu REST można z łatwością korzystać z metod HTTP takich jak GET, POST, PUT i DELETE. W efekcie punkt końcowy obsługujący wiele metod HTTP nie wymaga dodatkowej dokumentacji.
Struktura katalogów uruchamianego serwisu znajduje się poniżej.
-|- vendor -> |- stud - | .htaccess | | api.php | | mongo.php | | rest.php | client.html | rest.js | composer.json | test_mongo.php