Need advice about which tool to choose?Ask the StackShare community!

GraphQL

33.7K
27.7K
+ 1
310
JSON-RPC

35
53
+ 1
0
Add tool

GraphQL vs JSON-RPC: What are the differences?

Introduction

GraphQL and JSON-RPC are both popular data querying and manipulation protocols used in web development. While both serve a similar purpose, there are several key differences between the two that make them stand out in their own ways.

  1. Schema-based vs. Schema-less: One of the fundamental differences between GraphQL and JSON-RPC is their approach to data modeling. GraphQL relies on a strong schema, where the structure and types of the data are defined upfront. This allows clients to request only the specific data they need, reducing unnecessary payload. On the other hand, JSON-RPC is schema-less, meaning there is no predefined structure or type validation for requests or responses.

  2. Flexible vs. Fixed Response: GraphQL provides flexibility in terms of response structure. Clients can specify the fields they want to retrieve, and the server returns only those fields. This minimizes the over-fetching of data and reduces network bandwidth. In contrast, JSON-RPC has a fixed response structure defined by the server, where clients receive the entire response object regardless of their specific needs.

  3. Single Endpoint vs. Multiple Endpoints: GraphQL uses a single endpoint for all the data fetching and manipulation operations. Clients send a single request to this endpoint, which is then processed by the server to fetch the required data. JSON-RPC, on the other hand, typically involves multiple endpoints, with each endpoint serving a specific operation or method. Clients need to make separate requests to different endpoints for different operations.

  4. Strong Typing vs. Dynamic Typing: In GraphQL, strong typing is enforced at the schema level, ensuring that the data passed conforms to the specified types. This provides early validation and reduces the risk of runtime errors. JSON-RPC, being schema-less, allows for dynamic typing, where parameters and return values can have different types in different requests and responses.

  5. Bi-directional Communication vs. Request-Response: GraphQL supports bi-directional communication between the client and server. This means that not only can the client request data, but it can also push data to the server using subscriptions and real-time updates. JSON-RPC, on the other hand, operates on a request-response paradigm, where the client sends a request to the server and waits for the response.

  6. Cached Responses vs. Fresh Responses: GraphQL enables clients to cache responses efficiently. Since clients specify the exact data they need, they can reuse the cached responses for subsequent requests. This reduces the number of network requests and improves performance. In JSON-RPC, the entire response is sent every time with no built-in caching mechanism, requiring the server to process the request and generate a fresh response for every call.

In summary, GraphQL and JSON-RPC differ in their approach to data modeling, response flexibility, endpoint structure, typing, communication paradigm, and caching. Choosing between them depends on the specific requirements of the application and the desired trade-offs between flexibility and structure.

Manage your open source components, licenses, and vulnerabilities
Learn More
Pros of GraphQL
Pros of JSON-RPC
  • 75
    Schemas defined by the requests made by the user
  • 63
    Will replace RESTful interfaces
  • 62
    The future of API's
  • 49
    The future of databases
  • 13
    Self-documenting
  • 12
    Get many resources in a single request
  • 6
    Query Language
  • 6
    Ask for what you need, get exactly that
  • 3
    Fetch different resources in one request
  • 3
    Type system
  • 3
    Evolve your API without versions
  • 2
    Ease of client creation
  • 2
    GraphiQL
  • 2
    Easy setup
  • 1
    "Open" document
  • 1
    Fast prototyping
  • 1
    Supports subscription
  • 1
    Standard
  • 1
    Good for apps that query at build time. (SSR/Gatsby)
  • 1
    1. Describe your data
  • 1
    Better versioning
  • 1
    Backed by Facebook
  • 1
    Easy to learn
    Be the first to leave a pro

    Sign up to add or upvote prosMake informed product decisions

    Cons of GraphQL
    Cons of JSON-RPC
    • 4
      Hard to migrate from GraphQL to another technology
    • 4
      More code to type.
    • 2
      Takes longer to build compared to schemaless.
    • 1
      No support for caching
    • 1
      All the pros sound like NFT pitches
    • 1
      No support for streaming
    • 1
      Works just like any other API at runtime
    • 1
      N+1 fetch problem
    • 1
      No built in security
      Be the first to leave a con

      Sign up to add or upvote consMake informed product decisions

      What is GraphQL?

      GraphQL is a data query language and runtime designed and used at Facebook to request and deliver data to mobile and web apps since 2012.

      What is JSON-RPC?

      It is a very simple protocol, defining only a few data types and commands. It allows for notifications (data sent to the server that does not require a response) and for multiple calls to be sent to the server which may be answered out of order.

      Need advice about which tool to choose?Ask the StackShare community!

      Jobs that mention GraphQL and JSON-RPC as a desired skillset
      What companies use GraphQL?
      What companies use JSON-RPC?
      Manage your open source components, licenses, and vulnerabilities
      Learn More

      Sign up to get full access to all the companiesMake informed product decisions

      What tools integrate with GraphQL?
      What tools integrate with JSON-RPC?

      Sign up to get full access to all the tool integrationsMake informed product decisions

      Blog Posts

      GitHubDockerReact+17
      41
      37286
      GitHubPythonNode.js+47
      55
      72769
      What are some alternatives to GraphQL and JSON-RPC?
      gRPC
      gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking...
      Falcor
      Falcor lets you represent all your remote data sources as a single domain model via a virtual JSON graph. You code the same way no matter where the data is, whether in memory on the client or over the network on the server.
      React
      Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it's easy to try it out on a small feature in an existing project.
      graphql.js
      Lightest GraphQL client with intelligent features. You can download graphql.js directly, or you can use Bower or NPM.
      MongoDB
      MongoDB stores data in JSON-like documents that can vary in structure, offering a dynamic, flexible schema. MongoDB was also designed for high availability and scalability, with built-in replication and auto-sharding.
      See all alternatives