REST non richiede JSON o HTTP / 1.1
Puoi costruire banalmente un servizio RESTful che invia messaggi protobuf (o qualsiasi altra cosa) su HTTP / 2
Puoi creare servizi RESTful che inviano JSON su HTTP / 2
Puoi creare servizi RESTful che inviano messaggi protobuf su HTTP / 1.1
I servizi RESTful non sono un "hack" sopra HTTP / xx, sono servizi che seguono i principi architettonici fondamentali che hanno reso efficace qualsiasi versione di HTTP (come la cachebility delle richieste GET e la rigiocabilità delle richieste PUT).
gRPC, SOAP, et. Tutti sono più simili agli hack: hack su HTTP per eseguire il tunneling di servizi in stile RPC su HTTP, per aggirare le restrizioni di firewall e middlebox. Non è necessariamente una cosa negativa. A volte potresti volere un servizio in stile RPC invece di uno REST, e dobbiamo vivere in un mondo in cui i middlebox sono difficili da sostituire.
Se non hai tempo per leggere la definizione effettiva di REST:
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
C'è sempre il TLDR; versione su wikipedia:
https://en.wikipedia.org/wiki/Representational_state_transfer
Se hai bisogno di un servizio in stile RPC, certo, gRPC è fantastico. Se vuoi vivere sul Web o desideri tutti i vantaggi offerti da un servizio in stile RESTful, crea un servizio in stile RESTful. E se è troppo lento serializzare / deserializzare i dati in formato JSON nel tuo servizio riposante, è perfettamente OK usare protobuf o qualsiasi altra cosa.
Se gRPC è una versione 2 di qualcosa, è una versione 2 di SOAP. Uno che non è terribile, come SOAP.
E no, non puoi semplicemente "chiamare qualsiasi funzione" nella tua richiesta GET e avere un servizio RESTful.
Un'ultima cosa: se intendi utilizzare protobuf su un servizio RESTful, fallo bene, usando le intestazioni del tipo di contenuto, ecc. Con ciò, puoi facilmente supportare sia JSON CHE protobuf.
Ora sto scendendo dalla mia scatola SOAP ..;)