Für REST ist weder JSON noch HTTP / 1.1 erforderlich
Sie können trivial einen RESTful-Dienst erstellen, der Protobuf-Nachrichten (oder was auch immer) über HTTP / 2 sendet
Sie können RESTful-Services erstellen, die JSON über HTTP / 2 senden
Sie können RESTful-Services erstellen, die Protobuf-Nachrichten über HTTP / 1.1 senden
RESTful-Services sind kein "Hack" über HTTP / xx, sondern Services, die den grundlegenden Architekturprinzipien folgen, die jede Version von HTTP erfolgreich gemacht haben (wie die Cachefähigkeit von GET-Anforderungen und die Wiederspielbarkeit von PUT-Anforderungen).
gRPC, SOAP et al. Alle sind eher wie Hacks - Hacks über HTTP, um RPC-ähnliche Dienste über HTTP zu tunneln, um Firewall- und Middlebox-Einschränkungen zu umgehen. Das ist nicht unbedingt eine schlechte Sache. Manchmal möchten Sie vielleicht einen RPC-ähnlichen Dienst anstelle eines REST-Dienstes, und wir müssen in einer Welt leben, in der Middleboxen schwer zu ersetzen sind.
Wenn Sie keine Zeit haben, sich über die tatsächliche Definition von REST zu informieren:
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
Es gibt immer die TLDR; Version auf Wikipedia:
https://en.wikipedia.org/wiki/Representational_state_transfer
Wenn Sie einen Service im RPC-Stil benötigen, ist gRPC sicher großartig. Wenn Sie im Web leben möchten oder alle Vorteile eines RESTful-Style-Service nutzen möchten, erstellen Sie einen RESTful-Style-Service. Und wenn es zu langsam ist, Daten im JSON-Format in Ihrem erholsamen Service zu serialisieren / zu deserialisieren, ist es vollkommen in Ordnung, Protobuf oder was auch immer zu verwenden.
Wenn gRPC eine Version 2 von irgendetwas ist, ist es eine Version 2 von SOAP. Eine, die nicht schrecklich ist, wie SOAP.
Und nein, Sie können in Ihrer GET-Anfrage nicht einfach "irgendeine Funktion aufrufen" und haben einen RESTful-Service.
Eine letzte Sache: Wenn Sie Protobufs über einen RESTful-Service verwenden möchten, machen Sie es bitte richtig, indem Sie die Header des Inhaltstyps usw. verwenden. Damit können Sie sowohl JSON als auch Protobuf problemlos unterstützen.
Tritt jetzt von meiner SOAP-Box zurück ..;)