There is a lot of information on the Internet about gRPC and REST APIs. In fact, there is so much out there that it’s hard to sort it all out.
It’s common for developers of new APIs to struggle with selecting the best kind of API framework, let alone keeping up with the skills they need to write effective APIs for themselves or for clients. For new developers, the problem is even worse.
The simple fact is that both types of API are fine. However, there are times when one is better than the other. Understanding when gRPC vs REST performance will be best in an API is key to creating an effective API.
Let’s look at these two frameworks in depth.
Browse the Best Free APIs List
What is a gRPC vs a REST API?
Most APIs today use one of two main models. These models are known as REST (REpresentational State Transfer) and RPC (Remote Procedure Call).
REST APIs, sometimes also called RESTful APIs, were developed by Roy Fielding in the early 2000s to create a standardized, easy to use API. REST APIs quickly took off, making the older SOAP (Simple Object Access Protocol) APIs, which were often obscure and notoriously hard to use, obsolete.
RPCs technically predate REST, at least in their broader sense of any kind of communication protocol that involves a request by a client and a response from a server.
gRPC, however, is Google’s RPC-based API. It dates from 2015 and is designed to further simplify the process of calling APIs for developers and their clients. Interestingly, the “g” in gRPC stands for something different in every update, with the acronym standing for “gRPC Remote Procedure Call” in its first release and “geeky Remote Procedure Call” in release 1.33, according to the gRPC core.
How do these two types of API work?
At its core, both APIs are “client-server” protocols. That means that in both REST and gRPC style APIs, a “client” makes a request from a “server,” which then executes an action and returns a response to the client.
REST is built on standard HTTP verbs like GET and PUT. It works well with APIs for the Internet.
API designers for gRPC, however, do not need to add HTTP commands to their code. Instead, they select the procedure to call and any necessary parameters. Then, gRPC’s software will generate a stub which can be used to make the request when needed.
Who needs to understand gRPC vs REST differences?
The bottom line is that any API developer or programmer needs to understand that there are gRPC vs REST trade-offs.
REST, for instance, is easy to understand for web programmers, as it relies partly on HTTP. REST also uses standardized HTTP language like GET and PUT. Because these terms are familiar to many developers, REST APIs are great for building simple interfaces that allow clients to access server-side programs with relatively little fuss.
gRPC does not rely on HTTP, but rather uses Google’s own systems to generate the code used to communicate between clients and servers. That can be powerful and often results in a faster, more efficient API when properly implemented. However, it has a steeper learning curve and may have other drawbacks, depending on the scenario in which it is used.
Why are gRPC vs REST trade-offs important?
The key to creating effective APIs of any sort is to understand the trade-offs.
Despite what some advocates might say in their personal blogs, no one solution is better than any other in all cases. There are times when gRPC vs REST performance will be better, and there are times when it will be the other way around.
Ultimately, the best API for a developer in any given situation will depend on what exactly they want to do with it. This is why there’s such a rich and diverse API ecosystem.
What can you expect from gRPC vs REST?
The most important step in creating a RESTful API is to figure out what objects, called “resources,” clients will need access to. Once these resources are known, URIs must be created for each resource. JSON or XML representations of the resources come next, defining what each resource contains. Finally, developers must assign the specific operations their application can perform and assign them to HTTP commands like GET, PUT, and DELETE.
The workflow for gRPC looks very different.
Developers using gRPC will first need to download the grpc-go repository from the projects’ github page. They will then need to define the gRPC service, as well as the request and response types.
There are four different service models in gRPC: one “simple RPC” model which works similarly to a REST API and three types of “streaming” RPCs models, which allow for an ongoing “stream” of messages from either the client, the server, or both. Next, developers will generate client and server interfaces before starting a gRPC server for clients to use.
These directions make it clear why REST is so much easier to pick up than gRPC. Before getting started with the latter, developers may wish to read the extensive documentation at grpc.io, the main website explaining how to implement gRPC style APIs.
Use cases and examples of gRPC vs REST
gRPC APIs are far and away the best option for developers who need to be able to deliver a stream of requests, and in other cases where lots of data need to be sent. Because they don’t have to rely on HTTP, they are also effective when working with “Internet of Things” style programming.
REST APIs, on the other hand, are very effective at creating modular components for a server-based piece of software and sharing them with the world. They are especially useful for developers who know how to use HTTP as simply as they can, and who want to deliver data to a program in a JSON format.
What are the benefits of gRPC vs REST?
The main benefit of using REST is that it is designed to be simple, and it is commonly understood. API developers are likely to be able to understand a REST project without learning a new API model, and it’s much easier to find help for these types of API.
gRPC also offers unique benefits, and in some cases may be the better choice over REST. For instance, it is easier to define procedures in gRPC, and Google’s powerful cloud systems can generate client-side programming libraries that are easy for programmers to use. gRPC is also easier to implement on a server due to its included libraries and frameworks. Finally, gRPC is faster, in part because Google’s “protocol buffer” data structures take up less space than the JSON packets RESTful APIs rely on.
How do gRPC and REST compare to competitors?
The main competitor for gRPC and REST is OpenAPI.
OpenAPI also uses concepts and structures like RPC-type APIs. However, they require developers to build their own mapping to HTTP, requiring additional design time and a steeper learning curve.
gRPC avoids these problems because there is no need to build a custom mapping to HTTP. REST also avoids this problem, although it performs similarly against OpenAPI products as it does against gRPC otherwise.
Summary
Developers who find themselves asking, “What is gRPC vs REST and why does it matter?” should take heart. Although these APIs seem confusing, they don’t need to be.
REST is a classic API framework, and still offers its reliable benefits of uniformity and ease of use. gRPC is also a great choice, especially if there’s a need to implement streaming requests, which is hard to do in REST, or a desire to move away from JSON packets to Google’s language-neutral “protocol buffer” data structures.
The bottom line is that both types of API offer benefits, and developers will want to choose the one that’s best for their project. Instead of thinking about “gRPC vs REST,” developers will benefit the most if they learn to see these two styles of API as tools for different needs.
very nice article, instead HTML verbs should be HTTP verbs
I think RPC stands for Remote Procedure Call, not Remote Programmable Client.
Nevertheless, great overview.