REST is an architectural <i>style</i>, HTTP is a protocol that implements that style. People really should read the Fielding thesis to understand what it is, and what it <i>isn't</i>.<p>The concept of resources maps well to URLs, which <i>name</i> things, ie a URL is a <i>noun</i> not a verb. The REST style is about two endpoints <i>transferring</i> their current state of a resource, using a chosen <i>representation</i>, whether JSON, XML, JPG, HTML etc.<p>gRPC is a remote procedure protocol that uses protobufs as a TLV binary encoding for serializing marshalled arguments and responses. It requires clients and servers to have compiled stubs created to implement the two endpoints. Like most RPC, it is <i>brittle</i> and its abstraction as a procedure call <i>leaks</i> when networks fail.<p>GraphQL is a <i>query</i> protocol for retrieving things, often with associated (ie foreign key) relations. The primary use is defined in the "QL" of the name.<p>The benefit of HTTP and the use of limited verbs and expressive nouns (via URLs) is that HTTP defines the operation, expected idempotency, and expected resource "state" after an HTTP request/response has occurred. It has explicit constructs for caching, allowing middleware to optimize responses.<p>There's nothing in HTTP that requires JSON, the choice of media type is negotiable between the client and server. The same server URL can serve JSON, XML, protobufs, or any other format.<p>gRPC is yet another attempt to extend the function call of imperative languages to the network. It is the latest in a long line of attempts, Java had RMI, there was SOAP and XML-RPC. Before that there was CORBA and before that there was ONC-RPC. They all suffer from the lack of discoverability, the tight binding to language implementations, and the limitations of the imperative languages that they are written in.<p>They all end up failing because of the brittle relationship between client and server, the underlying encoding (XDR, IDL, Java etc etc) of the marshalling of arguments and responses is essentially irrelevant.