REST no requiere JSON o HTTP / 1.1
Puede construir trivialmente un servicio RESTful que envíe mensajes protobuf (o lo que sea) a través de HTTP / 2
Puede crear servicios RESTful que envían JSON a través de HTTP / 2
Puede crear servicios RESTful que envían mensajes protobuf a través de HTTP / 1.1
Los servicios RESTful no son un "truco" sobre HTTP / xx, son servicios que siguen los principios arquitectónicos fundamentales que han hecho que cualquier versión de HTTP sea exitosa (como la capacidad de caché de las solicitudes GET y la capacidad de reproducción de las solicitudes PUT).
gRPC, SOAP, et. todos son más como hacks: hacks en la parte superior de HTTP para hacer un túnel de servicios de estilo RPC a través de HTTP, para sortear las restricciones de firewall y middlebox. Eso no es necesariamente algo malo. A veces, es posible que desee un servicio de estilo RPC en lugar de uno REST, y tenemos que vivir en un mundo donde las cajas intermedias son difíciles de reemplazar.
Si no tiene tiempo para leer sobre la definición real de REST:
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
Siempre está el TLDR; versión en wikipedia:
https://en.wikipedia.org/wiki/Representational_state_transfer
Si necesita un servicio de estilo RPC, claro, gRPC es genial. Si desea vivir en la web, o desea todos los beneficios que vienen con un servicio de estilo RESTful, cree un servicio de estilo RESTful. Y si es demasiado lento serializar / deserializar datos en formato JSON en su servicio de descanso, está perfectamente bien usar protobuf o lo que sea.
Si gRPC es una versión 2 de algo, es una versión 2 de SOAP. Uno que no sea terrible, como SOAP.
Y no, no puede simplemente "llamar a cualquier función" en su solicitud GET y tener un servicio RESTful.
Una última cosa: si va a usar protobufs sobre un servicio RESTful, hágalo bien, usando los encabezados de tipo de contenido, etc. Con eso, puede admitir fácilmente tanto JSON como protobuf.
Saliendo de mi caja SOAP ahora ..;)