Up until the early 2000s there were only really two API protocols worth knowing about for developers, namely SOAP and REST. However, developments over the past few years have seen a number of new types of API protocols. If you’re working with blockchains or decentralized app development, then JSON-RPC is the one API protocol specification you will be required to have some understanding of.
Many decentralized platforms use JSON-RPC APIs, such as Bitcoin, Ethereum, Ripple, Solana and others. To truly understand what JSON-RPC is, we have to first explore what JSON is and then separately, look at what RPC means.
Its text-based format is easy for humans to read and write and easy for machines to parse and generate, making it an ideal data-interchange language.
RPC stands for remote procedure call. RPC is a broad term used to describe a variety of API approaches and has been in use since the 1970s, extending beyond web applications.
In distributed computing, an RPC is a communication protocol in which one computer program executes a procedure (subroutine) in a different address space such as another computer on a shared network.
RPCs are the same whether they are local or remote. That is, the programmer will essentially write the same code with no need to explicitly distinguish whether the subroutine is local to the executing program, or remote.
RPC uses a client-server model. A remote procedure call is initiated or requested by the client and the service-providing side is the server. Just as in a local procedure call, the requesting program is suspended until the results of the request are returned.
When a client sends a request, it transfers the procedure parameters across the network to the server’s environment where the procedure is executed.
Then, when the procedure is complete, the server transfers the results back to the client, where the program resumes just like it would have had the details been returned from a local procedure call.
Back to the question then, what is JSON-RPC?
JSON-RPC is a succession of JSON and keeps the simplicity of the original protocol, by defining no more than a few data types and commands.
It enables the sending of notifications to the server; the notifications are data that doesn’t require a response from the server. It also allows for multiple calls which can be answered out of sequence. It also brings into play an assorted data structure defining tasks for applications.
JSON-RPC has a light construction which allows for quick processing which makes it ideal for transferring data to blockchain nodes.
It is also a transport-agnostic protocol, meaning that it can interact over different transmission channels such as HTTP/S, WebSockets, XMPP, telnet, SFTP, SCP, or SSH, and all within the same process.
REST, which stands for Representational State Transfer, is an API architectural style which also relies on a client/server method. REST APIs, also known as RESTful APIs, rely on HTTP to exchange information and can be formatted in JSON or XML, with the former being the easier and preferred.
REST API and JSON-RPC are architectural styles for serving content remotely based on the client-server model. Both can be used to communicate with blockchain nodes.
Which one you choose depends on the complexity and scale of what you’re building.
The REST API approach was designed to work over HTTP but if you’re building an API for decentralized Web3 or that is more complex, then HTTP methods could be limiting.
For example, REST operates on a CRUD basis (Create, Read, Update and Delete) which doesn’t meet the needs for data that needs to be validated before saving it. The JSON-RPC is the alternative if you have specific needs and if you’re looking for simple, lightweight processes.
Although REST APIs are fairly easy to implement and work well in most cases, they can become complicated when it comes to passing parameters. There are four ways to do so: HTTP Headers, HTTP Body, URL path and URL query, and it’s not always clear which one to use.
With JSON-RPC, this is made much simpler. They are ready-to-go APIs with only one method to send a request, such as POST for HTTP or SEND for WebSockets, and only one response code.
JSON-RPC also provides the ability to make batch requests, an action not supported by REST.
JSON-RPC is an innovative protocol providing users with multiple benefits such as:
JSON-RPC is a clean and simple choice with no commands or data sets to cause confusion, making it easy for both humans and machines to understand. Its Unicode protocol and compact common line also make it an ideal option for newbie developers. Making batch requests, explaining HTTP body, and carrying parameters forward are also made simple with JSON-RPC.
The learning curve and developmental brainstorming with JSON-RPC is minimal since it is presented in such an easy-to-read way. The hassle-free resources reduce app development time and speed up the time-to-market.
JSON-RPC is a quick and accurate means of information exchange as it can handle multiple calls at any time and doesn’t wait for responses before proceeding with other calls.
When it comes to the decision of using JSON-RPC or REST APIs, everything depends on your particular project needs.
JSON-RPCs are ideal for large scale complex operations that have a critical need for high performance. This method provides a simplistic approach while at the same time giving the freedom to work over different transmission channels and batch multiple requests in one process.
REST APIs, on the other hand, give developers a convenient way to complete calls over HTTP. REST APIs are also easy to set up, simple to use and scale for future growth.
At Crypto APIs we use both architectural styles for different products. Our Blockchain Data is built on unified REST APIs allowing easy integration with top blockchain while our Node as a Service utilizes JSON-RPC methods.
To find out more about our Node as a Service, contact the Crypto APIs team today.