An overview of GraphQL

An overview of GraphQL

  • What is GraphQL
  • Why GraphQL
  • Hasura’s approach to GraphQL

What is GraphQL?

GraphQL is a specification of how to talk to an API. It’s typically used over HTTP where the key idea is to POST a “query” to an HTTP endpoint, instead of hitting different HTTP endpoints for different resources. GraphQL is designed for developers of web/mobile apps to be able to make API calls to fetch exactly the data they need from their backend APIs.

GraphQL is made for modern mobile and web clients. It defines standard grammar for a query language to read/write data. With GraphQL you can fetch exactly what you want from your app’s backend. It kind of looks like a neater JSON with just the keys and allows you to pass arbitrary parameters in the query.

Why GraphQL?

Developers love using GraphQL because it’s the most convenient API for JSON data. GraphQL is easy to read and debug and has a rich ecosystem of community tooling. GraphQL is database agnostic and can be used with any language or framework.

GraphQL Schema and Type System contract enables frontend and backend developers to collaborate and work independently.

Hasura’s Approach to GraphQL

Though GraphQL can be an extremely useful tool in building modern applications, there is a learning curve when it comes to developing with GraphQL. At Hasura, we’re striving to make that easier.

With Hasura, developers can easily get instant, production-ready GraphQL APIs that have built-in authorization and caching. Hasura is open-source, and we have also built a number of courses, tutorials, and guides on getting started with GraphQL, both independent of Hasura on front-end frameworks and full-stack frameworks and also tutorials on how to get started with Hasura.

What is GraphQL?

GraphQL is a specification of how to talk to an API. It’s typically used over HTTP where the key idea is to POST a “query” to an HTTP endpoint, instead of hitting different HTTP endpoints for different resources. GraphQL is designed for developers of web/mobile apps to be able to make API calls to fetch exactly the data they need from their backend APIs.

GraphQL is made for modern mobile and web clients. It defines standard grammar for a query language to read/write data. With GraphQL you can fetch exactly what you want from your app’s backend. It kind of looks like a neater JSON with just the keys and allows you to pass arbitrary parameters in the query.

Why GraphQL?

Developers love using GraphQL because it’s the most convenient API for JSON data. GraphQL is easy to read and debug and has a rich ecosystem of community tooling. GraphQL is database agnostic and can be used with any language or framework.

GraphQL Schema and Type System contract enables frontend and backend developers to collaborate and work independently.

Hasura’s Approach to GraphQL

Though GraphQL can be an extremely useful tool in building modern applications, there is a learning curve when it comes to developing with GraphQL. At Hasura, we’re striving to make that easier.

With Hasura, developers can easily get instant, production-ready GraphQL APIs that have built-in authorization and caching. Hasura is open-source, and we have also built a number of courses, tutorials, and guides on getting started with GraphQL, both independent of Hasura on front-end frameworks and full-stack frameworks and also tutorials on how to get started with Hasura.
An introduction to GraphQL

An introduction to GraphQL

  • GraphQL vs. REST
  • Hasura’s approach to GraphQL & REST

GraphQL vs REST

With the advent of GraphQL, we're changing the way we think about API calls. Instead of making different API calls to different URLs to fetch data, we're making ad-hoc queries to a "single URL endpoint" that returns data based on the query.

A GraphQL server gives you a single endpoint as opposed to having to use multiple endpoints while working with REST.

GraphQL has a schema and type system. REST doesn’t enforce any type of system. Since the schema is flexible, GraphQL encourages clients to make a single query instead of multiple roundtrips over HTTP. The schema and types allow the front-end client to enable caching better than REST APIs. You will also avoid over-fetching with GraphQL by specifying exactly what fields are needed.

Hasura’s Approach to GraphQL AND REST

With Hasura 2.0, Hasura now works with both GraphQL and REST.

You can read more about it in this article where we announced Hasura 2.0. We also have an article on an engineering overview of Hasura 2.0 - basically how we added support for REST APIs.

Also, read our blog post on the architectural differences between REST and GraphQL.
Watch Tanmai Gopal, CEO of Hasura, introducing GraphQL

GraphQL vs REST

With the advent of GraphQL, we're changing the way we think about API calls. Instead of making different API calls to different URLs to fetch data, we're making ad-hoc queries to a "single URL endpoint" that returns data based on the query.

A GraphQL server gives you a single endpoint as opposed to having to use multiple endpoints while working with REST.

GraphQL has a schema and type system. REST doesn’t enforce any type of system. Since the schema is flexible, GraphQL encourages clients to make a single query instead of multiple roundtrips over HTTP. The schema and types allow the front-end client to enable caching better than REST APIs. You will also avoid over-fetching with GraphQL by specifying exactly what fields are needed.

Hasura’s Approach to GraphQL AND REST

With Hasura 2.0, Hasura now works with both GraphQL and REST.

You can read more about it in this article where we announced Hasura 2.0. We also have an article on an engineering overview of Hasura 2.0 - basically how we added support for REST APIs.

Also, read our blog post on the architectural differences between REST and GraphQL.
Watch Tanmai Gopal, CEO of Hasura, introducing GraphQL
Breaking down GraphQL

Breaking down GraphQL

  • GraphQL Server
  • GraphQL Client
  • GraphQL Spec

GraphQL Server

Introduction
To serve a GraphQL API to your client, you need a GraphQL server. Hasura is a web application server that instantly generates GraphQL APIs out of the box, such that you don’t need to build a GraphQL server.

Hasura auto generates a GraphQL API on your databases & services and lets you extend the graph using Hasura Actions. You can bring in existing GraphQL servers and stitch them together with Hasura using the Remote Schemas feature, and join data across your database & services using Remote Joins.
Hasura as a high-performance GraphQL Server
Hasura compiles a GraphQL query of any length to a single SQL query. Internally Hasura enriches the GraphQL AST with user-given permissions & maps rules to create an SQL AST.

Hasura also caches your GraphQL query plan and makes highly optimized database calls. It also provides out-of-the-box GraphQL subscriptions that can be consumed at scale.
What is the N+1 Problem with GraphQL
GraphQL query execution typically involves executing a resolver for each field. Say we're fetching authors and their articles. Now for each author record in the database, we would invoke a function to fetch their N articles, So total round trips become N+1 and this could become a huge performance bottleneck. The number of queries grows exponentially with the depth of the query.

Hasura mitigates the N+1 problem as at its core, the server is a compiler. All your GraphQL queries to fetch data are compiled to a single SQL query that reduces the number of hits to the database, thereby improving performance.

How Hasura solves the GraphQL N+1 Problem
>
Query { authors { # fetches authors (1 query) name articles { # fetches articles for each author title # (N queries for N) authors } } }

GraphQL Client

Introduction
GraphQL requests can be made using your favorite HTTP clients since the underlying request/response format is usually JSON. But there’s more to a GraphQL client than just making HTTP requests, from caching to making real-time apps easy, Hasura provides support for all GraphQL Clients, including Relay (preview). There’s a rich ecosystem of GraphQL clients.
Benefits of GraphQL Clients
GraphQL Subscriptions & websockets:
Consuming a real-time API over WebSockets usually requires a lot of setup. GraphQL Clients like Apollo, Urql make it easy to set it up.
GraphQL Fragments & data co-location:
Relay uses Fragments to declare data requirements for components and compose data requirements together. All data dependencies live alongside component definitions and make it easier to reason about requirements for UIs.
GraphQL Caching:
The schema and introspection features of GraphQL enable a client to cache responses on the frontend.

Learn more about GraphQL Clients
>

GraphQL Spec

GraphQL Schema and Type System
In REST APIs, there isn't a concept of a schema or type system. On the other hand, GraphQL has a strong type system to define what the API looks like. A schema is defined with fields mapped to types and serves as a contract between the client and the server.

The schema contract lets frontend and backend devs work independently with guarantees that data requirements are always met. In REST APIs though, there's no strict contract. Following the OpenAPI spec will get you closer to GraphQL in terms of documentation. Community tooling around the OpenAPI spec gives an idea about the various endpoints and data payloads for REST APIs.
Hasura as a high-performance GraphQL Server
Hasura compiles a GraphQL query of any length to a single SQL query. Internally Hasura enriches the GraphQL AST with user-given permissions & maps rules to create an SQL AST.

Hasura also caches your GraphQL query plan and makes highly optimized database calls. It also provides out-of-the-box GraphQL subscriptions that can be consumed at scale.
GraphQL Queries
A GraphQL query allows you to fetch data. Ask what you want and get your results in the same shape. Fetch multiple resources at a time. Pagination, filter, and sort using arguments for more granular data fetching.

Hasura gives you powerful GraphQL queries out of the box with added customization like Computed Fields and data validation logic through Actions
>
query { brands (order_by: ["name"], limit:5) { id name products (order_by: ["rating"], limit: 10) { id name img } } }
GraphQL Mutations
A GraphQL Mutation allows you to manipulate data. Update single or multiple objects with any level of nesting, conditional updates, or deletes using arguments. Make upsert operations on conflicts to simplify app logic and return data back to the client post the mutation.

Hasura provides auto-generated GraphQL mutations with the ability to customize (REST API) via Actions and Remote Schemas
>
mutation { insert_product_tags(objects: [ { product id: 1. tag: "black" }, { product id: 1. tag: "electronics" } ]) { affected rows } }
GraphQL Subscriptions
A GraphQL Subscription allows you to subscribe to real-time data from a GraphQL server. The subscription API is exposed over WebSockets that can be easily consumed on the client. Hasura has in-built support from GraphQL subscriptions and lets you turn any query into a subscription.

How Hasura scales to 1 million live queries
>
subscription fetchorder { orders (where: {id: {eg: "XX-57"}}) { id payment dispatched } }

GraphQL Server

Introduction
To serve a GraphQL API to your client, you need a GraphQL server. Hasura is a web application server that instantly generates GraphQL APIs out of the box, such that you don’t need to build a GraphQL server.

Hasura auto generates a GraphQL API on your databases & services and lets you extend the graph using Hasura Actions. You can bring in existing GraphQL servers and stitch them together with Hasura using the Remote Schemas feature, and join data across your database & services using Remote Joins.
Hasura as a high-performance GraphQL Server
Hasura compiles a GraphQL query of any length to a single SQL query. Internally Hasura enriches the GraphQL AST with user-given permissions & maps rules to create an SQL AST.

Hasura also caches your GraphQL query plan and makes highly optimized database calls. It also provides out-of-the-box GraphQL subscriptions that can be consumed at scale.
What is the N+1 Problem with GraphQL
GraphQL query execution typically involves executing a resolver for each field. Say we're fetching authors and their articles. Now for each author record in the database, we would invoke a function to fetch their N articles, So total round trips become N+1 and this could become a huge performance bottleneck. The number of queries grows exponentially with the depth of the query.

Hasura mitigates the N+1 problem as at its core, the server is a compiler. All your GraphQL queries to fetch data are compiled to a single SQL query that reduces the number of hits to the database, thereby improving performance.

How Hasura solves the GraphQL N+1 Problem
>
Query { authors { # fetches authors (1 query) name articles { # fetches articles for each author title # (N queries for N) authors } } }

GraphQL Client

Introduction
GraphQL requests can be made using your favorite HTTP clients since the underlying request/response format is usually JSON. But there’s more to a GraphQL client than just making HTTP requests, from caching to making real-time apps easy, Hasura provides support for all GraphQL Clients, including Relay (preview). There’s a rich ecosystem of GraphQL clients.
Benefits of GraphQL Clients
GraphQL Subscriptions & websockets:
Consuming a real-time API over WebSockets usually requires a lot of setup. GraphQL Clients like Apollo, Urql make it easy to set it up.
GraphQL Fragments & data co-location:
Relay uses Fragments to declare data requirements for components and compose data requirements together. All data dependencies live alongside component definitions and make it easier to reason about requirements for UIs.
GraphQL Caching:
The schema and introspection features of GraphQL enable a client to cache responses on the frontend.

Learn more about GraphQL Clients
>

GraphQL Spec

GraphQL Schema and Type System
In REST APIs, there isn't a concept of a schema or type system. On the other hand, GraphQL has a strong type system to define what the API looks like. A schema is defined with fields mapped to types and serves as a contract between the client and the server.

The schema contract lets frontend and backend devs work independently with guarantees that data requirements are always met. In REST APIs though, there's no strict contract. Following the OpenAPI spec will get you closer to GraphQL in terms of documentation. Community tooling around the OpenAPI spec gives an idea about the various endpoints and data payloads for REST APIs.
Hasura as a high-performance GraphQL Server
Hasura compiles a GraphQL query of any length to a single SQL query. Internally Hasura enriches the GraphQL AST with user-given permissions & maps rules to create an SQL AST.

Hasura also caches your GraphQL query plan and makes highly optimized database calls. It also provides out-of-the-box GraphQL subscriptions that can be consumed at scale.
GraphQL Queries
A GraphQL query allows you to fetch data. Ask what you want and get your results in the same shape. Fetch multiple resources at a time. Pagination, filter, and sort using arguments for more granular data fetching.

Hasura gives you powerful GraphQL queries out of the box with added customization like Computed Fields and data validation logic through Actions
>
query { brands (order_by: ["name"], limit:5) { id name products (order_by: ["rating"], limit: 10) { id name img } } }
GraphQL Mutations
A GraphQL Mutation allows you to manipulate data. Update single or multiple objects with any level of nesting, conditional updates, or deletes using arguments. Make upsert operations on conflicts to simplify app logic and return data back to the client post the mutation.

Hasura provides auto-generated GraphQL mutations with the ability to customize (REST API) via Actions and Remote Schemas
>
mutation { insert_product_tags(objects: [ { product id: 1. tag: "black" }, { product id: 1. tag: "electronics" } ]) { affected rows } }
GraphQL Subscriptions
A GraphQL Subscription allows you to subscribe to real-time data from a GraphQL server. The subscription API is exposed over WebSockets that can be easily consumed on the client. Hasura has in-built support from GraphQL subscriptions and lets you turn any query into a subscription.

How Hasura scales to 1 million live queries
>
subscription fetchorder { orders (where: {id: {eg: "XX-57"}}) { id payment dispatched } }
Application Architectures with GraphQL and Hasura

Application Architectures with GraphQL and Hasura

  • GraphQL API for your microservices
  • GraphQL with Serverless

GraphQL API for your microservices:

Using Hasura Remote Schemas & Remote Joins
Hasura can connect to databases, upstream “mid-tier” microservices, external SaaS APIs, and event-driven business logic to expose a unified GraphQL API.

Hasura is designed to integrate with the emerging cloud-native patterns for building services. The future of business logic workflows in APIs or serverless functions is going to be event-driven, and Hasura makes that easy. Hasura provides an authorization engine that allows for securing the unified GraphQL API, including a powerful role, attribute, and rule-based access control.
GraphQL API for your microservices

GraphQL with Serverless:

Hasura serves as a data layer for serverless applications
In Hasura, business logic workflows in APIs or serverless functions are event-driven. Hasura also provides a way to create custom GraphQL mutations that are internally converted to events and delivered to serverless functions in an event-driven way. This makes it possible to integrate and migrate to event-driven business logic seamlessly.

Hasura Cloud gives you a scalable, highly available, globally distributed, secure GraphQL API over your data sources.
GraphQL with Serverless

GraphQL API for your microservices:

Using Hasura Remote Schemas & Remote Joins
Hasura can connect to databases, upstream “mid-tier” microservices, external SaaS APIs, and event-driven business logic to expose a unified GraphQL API.

Hasura is designed to integrate with the emerging cloud-native patterns for building services. The future of business logic workflows in APIs or serverless functions is going to be event-driven, and Hasura makes that easy. Hasura provides an authorization engine that allows for securing the unified GraphQL API, including a powerful role, attribute, and rule-based access control.
GraphQL API for your microservices

GraphQL with Serverless:

Hasura serves as a data layer for serverless applications
In Hasura, business logic workflows in APIs or serverless functions are event-driven. Hasura also provides a way to create custom GraphQL mutations that are internally converted to events and delivered to serverless functions in an event-driven way. This makes it possible to integrate and migrate to event-driven business logic seamlessly.

Hasura Cloud gives you a scalable, highly available, globally distributed, secure GraphQL API over your data sources.
GraphQL with Serverless
GraphQL Federation

GraphQL Federation

GraphQL Federation is an approach that lets you consolidate multiple schemas and APIs into a unified API. Hasura enables data federation between GraphQL and REST services, as well as databases. The unified API might be required for a team that has multiple sources of data for their application or might be a unified GraphQL API across various teams maintained by a central data API team in the organization.

Data Federation using Hasura Remote Joins
>
GraphQL for Databases

GraphQL for Databases

Create reusable APIs from your databases within minutes with centralized authentication, authorization, and data security down to the row and column level.

At present, Hasura has support for PostgreSQL and Postgres flavors such as TimescaleDB, YugabyteDB, and Amazon Aurora. We also have support for SQL Server and Google BigQuery. We’re working on providing support for Oracle, MongoDB, and MySQL (alpha already released) in the future. Feel free to sign up to be notified when that happens.
GraphQL in Production

GraphQL in Production

  • GraphQL Caching
  • GraphQL Security
  • GraphQL Monitoring and Observability
  • Making Existing GraphQL APIs Production-Ready

GraphQL Caching

Caching is hard and there can be latency issues and slow response times for GraphQL queries because of the response size, the location of the server, and the number of concurrent requests.

Hasura solves this by providing GraphQL caching for various use cases.

This results in:
  • TickAutomated caching of authenticated data
  • TickQuery caching at the database level
  • TickBlazing fast performance

Read more about GraphQL caching here
>

GraphQL Security

Hasura allows you to declaratively protect your GraphQL APIs.

Since API performance issues are usually due to malicious or poorly implemented queries, Hasura allows for depth limiting, node limiting, and rate limiting to restrict operations and help secure your API.

This results in:
  • TickDefault security for your API
  • TickFully configurable API limits and Allow Lists
  • TickFlexible and powerful authorization rules

Read more about GraphQL security here
>

GraphQL Monitoring and Observability

Hasura allows you to gain insights into your API availability and performance.

Some of the features that Hasura ships with allow for:
  • TickMonitoring slow queries
  • TickTracking errors
  • TickDistributed tracing
  • TickMonitoring WebSockets

Hasura also integrates with external monitoring services like Datadog, New Relic, and Azure Monitor.

Read more about GraphQL monitoring and observability here
>

Making Existing GraphQL APIs Production-Ready

If you already have production-ready GraphQL APIs, you can use Hasura to secure your existing APIs, add GraphQL caching, and join your API response with other data sources, and monitor and observe your GraphQL API with Hasura’s in-built monitoring capabilities.

This can be done instantly by adding your GraphQL server(s) as a Remote Schema, forwarding relevant headers, defining permission rules, and joining data between remote schema and existing schema.

Read more about making existing GraphQL APIs production-ready
>

GraphQL Caching

Caching is hard and there can be latency issues and slow response times for GraphQL queries because of the response size, the location of the server, and the number of concurrent requests.

Hasura solves this by providing GraphQL caching for various use cases.

This results in:
  • TickAutomated caching of authenticated data
  • TickQuery caching at the database level
  • TickBlazing fast performance

Read more about GraphQL caching here
>

GraphQL Security

Hasura allows you to declaratively protect your GraphQL APIs.

Since API performance issues are usually due to malicious or poorly implemented queries, Hasura allows for depth limiting, node limiting, and rate limiting to restrict operations and help secure your API.

This results in:
  • TickDefault security for your API
  • TickFully configurable API limits and Allow Lists
  • TickFlexible and powerful authorization rules

Read more about GraphQL security here
>

GraphQL Monitoring and Observability

Hasura allows you to gain insights into your API availability and performance.

Some of the features that Hasura ships with allow for:
  • TickMonitoring slow queries
  • TickTracking errors
  • TickDistributed tracing
  • TickMonitoring WebSockets

Hasura also integrates with external monitoring services like Datadog, New Relic, and Azure Monitor.

Read more about GraphQL monitoring and observability here
>

Making Existing GraphQL APIs Production-Ready

If you already have production-ready GraphQL APIs, you can use Hasura to secure your existing APIs, add GraphQL caching, and join your API response with other data sources, and monitor and observe your GraphQL API with Hasura’s in-built monitoring capabilities.

This can be done instantly by adding your GraphQL server(s) as a Remote Schema, forwarding relevant headers, defining permission rules, and joining data between remote schema and existing schema.

Read more about making existing GraphQL APIs production-ready
>
GraphQL Tutorials

GraphQL Tutorials

We’ve come up with an extensive list of courses and tutorials that will take you from the basics all the way to production-ready concepts. We’ve covered a wide array of topics on GraphQL, Hasura, and Databases and we’re always adding more. These courses are open-sourced and community-maintained.

Hasura Tutorials

We have 4 courses on Hasura that will cover basic concepts as well as advanced topics on optimizing applications.

Front-end GraphQL Tutorials

We have 13 courses on using GraphQL with the most commonly used front-end frameworks that cover topics such as GraphQL vs REST, queries, mutations, subscriptions, and more.

Full-stack GraphQL Tutorials

We have 2 full-stack GraphQL tutorials on building real-time todo apps using authenticated GraphQL APIs.

Database Tutorials

Hasura gives you GraphQL and REST APIs over data sources such as databases like PostgreSQL, SQL Server, and BigQuery. The Hasura community requested that we also delve into these types of courses to help out the front-end developer. These database tutorials will cover core concepts around data modeling with examples of SQL statements.

Introduction to GraphQL

Our Introduction to GraphQL Course is the perfect place to start if you’re beginning your GraphQL journey.

This tutorial will take you through to the basics of what is GraphQL, the differences between GraphQL and REST, core concepts of what a GraphQL document is and what an operation looks like, all the way to concepts around introspection, queries, mutations, subscriptions, GraphQL servers, and clients.
Open-Source GraphQL Projects that we love

Open-Source GraphQL Projects that we love

Hasura’s GraphQL Engine grew to over 300 million downloads in just two years and a lot of the kudos has to go to the GraphQL community at large - starting with the team at Facebook for developing and open-sourcing GraphQL, but also the many developers around the world who tirelessly contribute to making GraphQL what it is today.

We’re listing down some open-source GraphQL projects that we love and are always looking for more to add to this list. So do get in touch, and let us know!

Here are 5 just to get this started:
GraphQL Events

GraphQL Events

  • GraphQL Asia
  • The Enterprise GraphQL Conference
  • GraphQL Contributor Days

GraphQL Asia

We host Asia’s largest GraphQL conference usually in the last week of February every year. The event also hosts talks in multiple Asian languages and the speakers ranged from GraphQL co-creator Dan Schafer to GraphQL proponents like Roy Derks at the latest conference in February 2021.

Check out GraphQL Asia 2021
>
GraphQL Asia

The Enterprise GraphQL Conference

We host the Enterprise GraphQL Conference (EGC) in October each year where we get folks in the GraphQL space working in larger enterprises to come and speak about the state of GraphQL and the direction that it is going in. This year, in October 2021, EGC centered around the concept of the Data Mesh, an idea pioneered by Zhamak Dehghani, talking about federating data with GraphQL and data-oriented architectures.

Check out EGC 2021
>
The Enterprise GraphQL Conference

GraphQL Contributor Days

We also host GraphQL Contributor Days where community members from around the world come and speak about GraphQL. These events happen once in a while but we’re trying our best to get them going more often! Some past speakers: Sasha Solomon, Eve Porcello, Sean Grove, Simona Cotin, Christian Nwamba, Tracy Lee, Natalia Tepluhina, and Uri Goldshtein
GraphQL Contributor Days

GraphQL Asia

We host Asia’s largest GraphQL conference usually in the last week of February every year. The event also hosts talks in multiple Asian languages and the speakers ranged from GraphQL co-creator Dan Schafer to GraphQL proponents like Roy Derks at the latest conference in February 2021.

Check out GraphQL Asia 2021
>
GraphQL Asia

The Enterprise GraphQL Conference

We host the Enterprise GraphQL Conference (EGC) in October each year where we get folks in the GraphQL space working in larger enterprises to come and speak about the state of GraphQL and the direction that it is going in. This year, in October 2021, EGC centered around the concept of the Data Mesh, an idea pioneered by Zhamak Dehghani, talking about federating data with GraphQL and data-oriented architectures.

Check out EGC 2021
>
The Enterprise GraphQL Conference

GraphQL Contributor Days

We also host GraphQL Contributor Days where community members from around the world come and speak about GraphQL. These events happen once in a while but we’re trying our best to get them going more often! Some past speakers: Sasha Solomon, Eve Porcello, Sean Grove, Simona Cotin, Christian Nwamba, Tracy Lee, Natalia Tepluhina, and Uri Goldshtein
GraphQL Contributor Days
The GraphQL Community

The GraphQL Community

  • GraphQL Community & Ecosystem
  • The GraphQL Foundation
  • 5 Years of GraphQL

GraphQL Community & Ecosystem

GraphQL’s specification has allowed for a rich ecosystem of tooling to be created which are all interoperable, and help to continuously enhance the developer experience around GraphQL. As Hasura is 100% compliant with the GraphQL spec, this entire ecosystem of tooling is usable by our users.

The GraphQL Foundation

The GraphQL Foundation is a neutral foundation founded by global technology and application development companies. Hasura is a founding member of the GraphQL foundation and is working together with other members to form a new, vendor-neutral foundation that will provide unified governance and stewardship for GraphQL.

Hosted under the Linux Foundation, the nonprofit organization enabling mass innovation through open source, the Foundation’s mission will be to enable widespread adoption and help accelerate the development of GraphQL and the surrounding ecosystem. Read more on recent announcements.

5 Years of GraphQL

2020 represents 5 years on GraphQL! We asked some of GraphQL’s earliest adopters 10 questions about GraphQL & its evolution. Watch the video to know more!
“GraphQL wouldn’t exist without the community of engineers who continue to contribute to making GraphQL what it is today.”
Lee Byron, Co-Creator, GraphQL
Five years of GraphQL 🎉

GraphQL Community & Ecosystem

GraphQL’s specification has allowed for a rich ecosystem of tooling to be created which are all interoperable, and help to continuously enhance the developer experience around GraphQL. As Hasura is 100% compliant with the GraphQL spec, this entire ecosystem of tooling is usable by our users.

The GraphQL Foundation

The GraphQL Foundation is a neutral foundation founded by global technology and application development companies. Hasura is a founding member of the GraphQL foundation and is working together with other members to form a new, vendor-neutral foundation that will provide unified governance and stewardship for GraphQL.

Hosted under the Linux Foundation, the nonprofit organization enabling mass innovation through open source, the Foundation’s mission will be to enable widespread adoption and help accelerate the development of GraphQL and the surrounding ecosystem. Read more on recent announcements.

5 Years of GraphQL

2020 represents 5 years on GraphQL! We asked some of GraphQL’s earliest adopters 10 questions about GraphQL & its evolution. Watch the video to know more!
“GraphQL wouldn’t exist without the community of engineers who continue to contribute to making GraphQL what it is today.”
Lee Byron, Co-Creator, GraphQL
Five years of GraphQL 🎉
FAQs

FAQs

  • GraphQL FAQs
  • Hasura FAQs

GraphQL FAQs

What is GraphQL used for?
GraphQL is used on the client to ask exactly the data required efficiently. GraphQL on the server resolves the query and returns only the data asked and nothing more.
What is GraphQL?
GraphQL is a query language for APIs. GraphQL is designed for developers of web/mobile apps (HTTP clients) to be able to make API calls to fetch the data they need from their backend APIs conveniently. Learn more here
What is the difference between GraphQL vs REST?
GraphQL is a query language that works on a single endpoint compared to multiple Resources in a REST API. GraphQL has a schema and type system while REST doesn’t enforce any type system. Read more about GraphQL vs REST
Is GraphQL a database?
No. GraphQL is just a query language for APIs. It is database agnostic. The GraphQL server can query any database and any APIs.
Is GraphQL replacing REST?
GraphQL can be considered an alternative to REST, but it doesn't replace REST altogether. In fact GraphQL and REST can co-exist in the stack, where REST APIs are abstracted behind a GraphQL server.
Does GraphQL use HTTP?
GraphQL API is typically served through an HTTP endpoint. But it is protocol agnostic and can use different protocols for different use cases. For example, websockets are used for GraphQL subscriptions to consume realtime data.

Hasura FAQs

What is Hasura?
Hasura is an open source GraphQL service that connects to your databases & microservices and auto-generates a production-ready GraphQL backend.
What databases does Hasura support?
Postgres and its flavors (Timescale, Yugabyte). We are planning to launch support for more databases soon, watch this space
Does Hasura let me customize the GraphQL server?
Hasura allows customization and extension of the auto-generated CRUD APIs through Remote Schemas (bringing in external GraphQL servers), Actions (mapping GraphQL types to REST APIs) and through event system.

GraphQL FAQs

What is GraphQL used for?
GraphQL is used on the client to ask exactly the data required efficiently. GraphQL on the server resolves the query and returns only the data asked and nothing more.
What is GraphQL?
GraphQL is a query language for APIs. GraphQL is designed for developers of web/mobile apps (HTTP clients) to be able to make API calls to fetch the data they need from their backend APIs conveniently. Learn more here
What is the difference between GraphQL vs REST?
GraphQL is a query language that works on a single endpoint compared to multiple Resources in a REST API. GraphQL has a schema and type system while REST doesn’t enforce any type system. Read more about GraphQL vs REST
Is GraphQL a database?
No. GraphQL is just a query language for APIs. It is database agnostic. The GraphQL server can query any database and any APIs.
Is GraphQL replacing REST?
GraphQL can be considered an alternative to REST, but it doesn't replace REST altogether. In fact GraphQL and REST can co-exist in the stack, where REST APIs are abstracted behind a GraphQL server.
Does GraphQL use HTTP?
GraphQL API is typically served through an HTTP endpoint. But it is protocol agnostic and can use different protocols for different use cases. For example, websockets are used for GraphQL subscriptions to consume realtime data.

Hasura FAQs

What is Hasura?
Hasura is an open source GraphQL service that connects to your databases & microservices and auto-generates a production-ready GraphQL backend.
What databases does Hasura support?
Postgres and its flavors (Timescale, Yugabyte). We are planning to launch support for more databases soon, watch this space
Does Hasura let me customize the GraphQL server?
Hasura allows customization and extension of the auto-generated CRUD APIs through Remote Schemas (bringing in external GraphQL servers), Actions (mapping GraphQL types to REST APIs) and through event system.

Start with GraphQL on Hasura for Free

  • ArrowBuild apps and APIs 10x faster
  • ArrowBuilt-in authorization and caching
  • Arrow8x more performant than hand-rolled APIs
Promo
footer illustration
Brand logo
© 2022 Hasura Inc. All rights reserved
Github
Titter
Discord
Facebook
Instagram
Youtube
Linkedin