nauki REST w C#.
REST nie uczysz się w danej technologii. Representational State Transfer to podejście do pisania API zaproponowane przez Roy'a Fieldinga (współtwórcę protokołu http) w jego pracy doktorskiej z 2000 roku.
Sam proces tworzenia jest podobny do pisania zwykłego API - jednak aby było ono faktycznie restful trzeba spełnić wymogi (ang. constraints). narzucone na architekturę oprogramowania sieciowego.
REST jest podejściem które idzie w parze i godzi się z protokołem HTTP (zarówno wersji 1.1 jak i 'nowej' 2ki - różnice są tak na prawdę głównie w optymalizacji). Zamiast walczyć z HTTP tak jak miało - albo raczej dalej ma miejsce w przypadku SOAP, wykorzystujemy w pełni jego arsenał możliwości.
Czym są hypermedia, czyli HATEOAS, będzie zawarte w poniższych linkach.
REST tak jak wcześniej wspomniałem opiera się na wymogach (ang. constraints) którymi są:
- Client-Server
- Bezstanowość (Stateless)
- Cache
- Uniwersalny/jednolity interfejs (Uniform Interface)
- System warstwowy (Layered System)
- Kod na żądanie (Code-On-Demand)
Tłumaczenia mogą nie być najlepsze - zachęcam do stosowania angielskiej terminologii.
Opisanie na czym polega REST w szczegółach to temat na spoory artykuł tak więc ograniczę się do tego wstępu i podania źródeł.
Absolutnym obowiązkiem według mnie jest pójście 'do korzeni' - czyli przeczytanie wspomnianej już przeze mnie pracy Roy'a:
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
Rest jest zawarty w 5tym rozdziale - natomiast polecam przeczytać całość.
Kolejny tekst od mistrza rest'u - tutaj natomiast o samym nacisku na to, że API powinno być hypertext-driven
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
Martin Fowler również się udziela na ten temat ;)
http://martinfowler.com/articles/richardsonMaturityModel.html
Prelekcja o REST API wraz z demo które pokazuję jak się przemieszczać po api oraz jak powinna już wyglądać gotowa implementacja
https://www.youtube.com/watch?v=pZYRC8IbCwk
Tutaj lista książek zaproponowana przez Mike'a Amundsena - możecie go spotkać na kanale irc #rest
https://www.infoq.com/articles/rest-reading-list
O czym nie można zapomnieć, to o typie zwracanych hypermediów, (ang. hypermedia type) a właściwie to ogólnie o typie zwracanej odpowiedzi. Chyba najpopularniejszym teraz standardem jest:
http://jsonapi.org/
Innymi również popularnymi są: HAL, Collection+JSON, Siren, JSON-LD. Porównanie ich znajdziecie tutaj:
http://sookocheff.com/post/api/on-choosing-a-hypermedia-format/
Na koniec podeście do restu które nieco odchodzi od wcześniej wymienionych purystów, czyli pisanie pragmatycznych API. W praktyce w firmach tak zazwyczaj to wygląda (i to w scenariuszu dobrego kodu) :
http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
Najbliższe znane mi (duże i prosperujące) API które można nazwać restful, czyli między innymi stosujące hypermedia (naczęściej pomijany aspekt REST API) jest Twitch API
https://github.com/justintv/Twitch-API
Żeby nie szukać dalej, tutaj znajdziecie przykład źle napisanego `rest api` - choć z restem to ma niewiele wspólnego
https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md
A tutaj powody dlaczego
https://www.infoq.com/news/2016/07/microsoft-rest-api