# Introduction to GraphQL in QueryDeck

### **What is GraphQL?**

GraphQL is a query language for APIs that allows clients to request precisely the data they need. Unlike REST, which exposes multiple endpoints for different resources, GraphQL provides a single flexible endpoint where clients specify their data requirements in a structured query format.

***

### **Why Use GraphQL in QueryDeck?**

QueryDeck supports GraphQL, enabling developers to interact with databases efficiently while minimizing over-fetching or under-fetching of data. With GraphQL in QueryDeck, you can:

* Fetch multiple related objects in a single request.
* Define specific fields to retrieve, reducing data payload size.
* Implement filtering, sorting, and pagination dynamically.
* Use mutations to insert, update, or delete data flexibly.
* Handle real-time subscriptions for live data updates.

***

### **GraphQL vs. REST**

| Feature                 | GraphQL                                       | REST                                        |
| ----------------------- | --------------------------------------------- | ------------------------------------------- |
| **Data Fetching**       | Fetch only requested fields                   | Fetches all fields, even if unnecessary     |
| **Number of Endpoints** | Single endpoint (`/graphql`)                  | Multiple endpoints per resource             |
| **Over-fetching**       | Avoids over-fetching by selecting fields      | Can over-fetch unnecessary fields           |
| **Under-fetching**      | Retrieves nested data in one request          | Requires multiple requests for related data |
| **Batch Requests**      | Supports multiple queries in a single request | Requires multiple calls for different data  |
