Czym jest REST?
RestWiki opisuje REST jako "styl projektowania architektury oprogramowania prezentującego informacje w sieci WWW".
Zasoby
Stan i funkcjonalność aplikacji jest podzielona na jednostki definiowane jako 'zasoby'.
Każdy zasób ma unikalny adres, w postaci uniwersalnego identyfikatora
Wszystkie zasoby używają jednolitego interfejsu do zmiany stanu, który składa się z
- Ograniczonego zbioru dobrze zdefiniowanych operacji
- Ograniczonego zbioru reprezentacji danych
Protokół
- typu klient/serwer
- bezstanowy
- keszowalny
- warstwowany
W praktyce, RESTowym można nazwać każdy protokół, który serwuje dane po HTTP, w wybranym formacie (np. JSON, YAML, XML), używający jednego URL na jeden logiczny zasób, i standardowych metod HTTP do korzystania z tych zasobów.
Tak właśnie działają kolejne API (poza galeriami) grono.net. Dla każdego logicznego obiektu, istnieje URL, na którym wykonywane są wszelkie operacje. Zwracane dane są w dobrze określonym formacie, czasem możliwym do wybrania z kilku alternatyw. Kod odpowiedzi HTTP określa status wykonania operacji.
Typowe dla Grona kody odpowiedzi
200 OK
Operacja wykonana poprawnie. W treści żądane dane.
201 Created
Operacja wykonana poprawnie, obiekt utworzony. W nagłówku Location może znajdować się URL nowego obiektu.
202 Accepted
Operacja przyjęta do realizacji. Zwracane przy niektórych operacjach których wykonanie nie jest natychmiastowe, czyli status jego powodzenia nie może zostać określony w czasie jednego requesta.
204 No Content
Operacja wykonana poprawnie, nie ma danych do zwrócenia. Odpowiedź jest generowana najczęściej przy modyfikacji zasobów.
400 Bad Request
Niepoprawnie sformułowane żądanie. Brak wymaganych parametrów, niepoprawny format parametrów lub danych wejściowych.
402 Payment Required
Korzystanie z zasobu wymaga wykupienia abonamentu Gronowładnego.
403 Forbidden
Brak autoryzacji. Nalezy sie zalogować. Używane zamiast 401, ponieważ ten header jest skojarzony z mechanizmen autoryzacji HTTP. Jeśli wprowadzona zostanie autentykacja HTTP, może zostać zastąpiony 401.
404 Not Found
Obiekt nie znaleziony, brak uprawnień lub nie można wygenerować żądanego formatu danych.
405 Method Not Allowed
Nieprawidłowa operacja na obiekcie. POST na obiekt który obsługuje tylko GET, lub w przypadku bardziej złożonych operacji, nieobsługiwany typ operacji. W szczególności zwracany przy próbie modyfikacji atrybutu tylko do odczytu.
409 Conflict
Obecny stan zasobu nie pozwala na dokonanie wskazanej akcji. Oznacza zatem, że istnieją ograniczenia co do ilości operacji w jednostce czasu, i właśnie zostały przekroczone. Używany zarówno w operacjach pobierających, jak i modyfikujących dane.
415 Unsupported Media Type
Nieobsługiwany format treści zapytania. Serwer nie potrafi przetworzyć danych wejściowych w podanym formacie. Zamiast 415 może wystąpić też 400 lub 500, które zasygnalizują podobny stan, ale z różnych przyczyn.
500 Internal Server Error
Błąd podczas realizacji żądania. Warto zgłosić do nas (korzystając z ticketów) sytuację, dodając dokładny opis danych wysyłanych.
503 Service Unavailable
Usługa wyłączona ze względu na konserwację. W odpowiedzi może być podany przewidywany czas włączenia usługi, w formacie ISO-8601.
