Czym jest REST API? (#1)
REST API to jeden z tematów o których słyszał każdy programista, lecz inaczej wygląda to z jego pełnym zrozumieniem i praktycznym wykorzystaniem. Ta seria filmów ma na celu to zmienić. Pierwszy odcinek odpowiada na pytanie: Czym jest REST API?
overment z- #
- #
- #
- #
- 177
- Odpowiedz
Komentarze (177)
najlepsze
Nawet nie wiadomo do końca jakie kody HTTP powinno zwracać w jakich sytuacjach i w jaki sposób obsługiwać błędy i powiadamiać o nich klienta.
To co przeciętne REST API robi z status kodami HTTP woła o pomstę do nieba. Te statusy są dobrze zdefiniowane w samym standardzie HTTP ale one zostały wymyślone po to by informować o stanie komunikacji
Jeden rabin powie że robiąc PUT i nie podając wymaganego pola (albo popełniając jakiś inny błąd merytoryczny/logiczny, nie syntaktyczny) API powinno zwrócić HTTP 200, inny rabin powie że HTTP 400.
W porownaniu do soapa ;)
Dodać, że REST czekał 10 lat na jako taki format jego opisu (openapi a wcześniej swagger bo wadl się nie przyjął).
Inna kwestia że REST to nie tylko RPC a cała filozofia w podejściu do tworzenia API.
Do tego momentu sprawa jest prosta, komplikacje pojawiają się w chwili gdy trzeba pobrać aktorów z danego filmu. Przy wsdl definiujesz operację getActorsByMovieId, natomiast przy prawidłowym reście powinno być /movies/:id/actors lub coś podobnego.
W praktyce widziałem bardzo niewiele
ps. choć są wyjątki gdzie się sprawdza, ale wyjątek potwierdza regułę
Komentarz usunięty przez moderatora
1) Faktycznie nie określiłem tego. Wziąłem pod uwagę dwa use case'y.
2) Sprzeczałbym się czy kompletnie nie związana z API, ale chyba rozumiem punkt widzenia.
3) To powiem w kolejnych filmach
4) Tak, mój angielski leży
@bobsonjones: Raczej, jak można było na siłę dopasowywać coś, co z natury jest RPC, do jakiegoś wydumanego modelu, który po prostu rozmija się z potrzebami i w ogóle rzeczywistością.
@Goglez: Bo REST to po prostu glorified CRUD. Od tego mamy repozytoria w DDD, żeby ten "niskopoziomowy" sposób rozumowania zaenkapsulować. Ponad nimi mamy agregaty, encje, sagi, zdarzenia - obiekty, które poprzez swój interfejs wyrażają koncepcje biznesowe #!$%@?ące od prymitywów "create", "read", "update" i "delete". Obiekty domenowe nie eksponują zasobów, jak REST, ale funkcjonalności. Te funkcjonalności opakowuje się następnie w konkretne przypadki użycia - dawniej tworzono klasy zwane serwisami aplikacyjnymi,
Ten aspekt REST API (a raczej protokołu HTTP) jest najczęściej mylony i implementowany niepoprawnie.