REST nie wymaga formatu JSON ani HTTP / 1.1
Możesz w trywialny sposób zbudować usługę RESTful, która wysyła wiadomości protobuf (lub cokolwiek innego) przez HTTP / 2
Możesz tworzyć usługi RESTful, które wysyłają JSON przez HTTP / 2
Możesz budować usługi RESTful, które wysyłają komunikaty protobuf przez HTTP / 1.1
Usługi RESTful nie są „hackem” w stosunku do HTTP / xx, są to usługi działające zgodnie z podstawowymi zasadami architektury, które sprawiły, że każda wersja HTTP zakończyła się sukcesem (np. Możliwość buforowania żądań GET i odtwarzalność żądań PUT).
gRPC, SOAP, et. wszystkie są bardziej jak hacki - hacki na szczycie HTTP do tunelowania usług w stylu RPC przez HTTP, do omijania ograniczeń zapory i skrzynki pośredniej. To niekoniecznie jest złe. Czasami możesz chcieć usługi w stylu RPC zamiast REST, a my musimy żyć w świecie, w którym ciężko jest wymienić middleboxy.
Jeśli nie masz czasu na zapoznanie się z rzeczywistą definicją REST:
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
Zawsze istnieje TLDR; wersja na wikipedii:
https://en.wikipedia.org/wiki/Representational_state_transfer
Jeśli potrzebujesz usługi w stylu RPC, z pewnością gRPC jest świetny. Jeśli chcesz żyć w sieci lub chcesz czerpać korzyści z usługi w stylu RESTful, utwórz usługę w stylu RESTful. A jeśli serializacja / deserializacja danych w formacie JSON w Twojej spokojnej usłudze jest zbyt powolna, możesz użyć protobuf lub cokolwiek innego.
Jeśli gRPC jest wersją 2 czegokolwiek, jest to wersja 2 protokołu SOAP. Taki, który nie jest straszny, jak SOAP.
I nie, nie możesz po prostu „wywołać dowolnej funkcji” w żądaniu GET i mieć usługę RESTful.
I ostatnia rzecz: jeśli zamierzasz używać protobufów zamiast usługi RESTful, zrób to dobrze, używając nagłówków typów zawartości itp. Dzięki temu możesz łatwo obsługiwać zarówno JSON, jak i protobuf.
Wychodzę teraz z mojej skrzynki SOAP ..;)