Bardzo ogólne i wstępne wprowadzenie do zasad panujących przy tworzeniu REST API
Jakie są zasady?
- Zasoby jako punkty końcowe:
- Każdy zasób jest identyfikowany przez unikalny URL.
- Stateless:
- Każde żądanie powinno zawierać wszystkie informacje niezbędne do jego realizacji – serwer nie przechowuje stanu sesji użytkownika.
- REST API wykorzystuje metody HTTP:
GET
do pobierania danych,POST
do tworzenia nowych zasobów,PUT
/PATCH
do aktualizacji- PUT – aktualizujemy cały obiekt, nadpisując go
- PATCH – aktualizujemy np. jeden parametr
DELETE
do usuwania.
- Format danych:
- Dane są zazwyczaj przesyłane w formacie JSON lub XML.
- HATEOAS (Hypermedia As The Engine Of Application State):
- Klient powinien być w stanie odkrywać dostępne operacje dzięki dostarczanym hiperlinkom (choć nie jest to zawsze wymagane).
Poziomy dojrzałości REST API (Model R. Fieldinga)
Richard Fielding zaproponował 4-poziomowy model dojrzałości który określa, jak dobrze interfejs spełnia zasady REST:
- Level 0: Remote Procedure Call (RPC)
API jest zbiorem punktów końcowych wykonujących określone operacje, ale nie wykorzystuje w pełni potencjału HTTP.- Przykład:
/getUser
lub/deleteProduct
.
- Przykład:
- Level 1: Zasoby
API zaczyna traktować zasoby jako centralny element. Zasoby mają swoje unikalne identyfikatory,- np.
/users/123
.
- np.
- Level 2: Wykorzystanie metod HTTP
API korzysta z metod HTTP zgodnie z ich przeznaczeniem (GET
,POST
,PUT
,DELETE
), co upraszcza interakcję z zasobami. - Level 3: HATEOAS
Najwyższy poziom dojrzałości – API zwraca odpowiedzi zawierające linki do dalszych możliwych akcji, co pozwala na dynamiczne odkrywanie możliwości API.
Wersjonowanie API
Wersjonowanie API jest kluczowe, aby umożliwić zmiany w interfejsie bez przerywania działania starszych aplikacji korzystających z niego.
Najpopularniejsze metody wersjonowania to:
- W URL-u
/v1/users /v2/users
- Proste w użyciu i zrozumiałe, choć może prowadzić do nadmiarowości.
- W nagłówkach HTTP:
GET /users Headers: X-API-Version: 1
- Wygodne, ale mniej widoczne dla użytkowników.
- W parametrach zapytania:
/users?version=1
- Rzadziej stosowane, ale możliwe.
Konwencje nazewnicze w REST API
- Zasoby w liczbie mnogiej:
- ✅
/users
- ❌
/user
- ✅
- Unikanie czasowników w nazwach zasobów:
- ✅
/orders/123
- ❌
/getOrder
- ✅
- Użycie identyfikatorów:
- ✅
/products/456/reviews
(podzasoby)
- ✅
- Czytelne nazwy:
- Używaj czytelnych, krótkich i anglojęzycznych nazw zasobów.
- HTTP status codes:
- Zwracaj odpowiednie kody statusu:
- 200 (OK),
- 201 (Created),
- 400 (Bad Request),
- 404 (Not Found),
- 500 (Internal Server Error).
- Zwracaj odpowiednie kody statusu: