| GraphQL | REST |
|---|---|
| GraphQL is an API design architecture, but with a different approach that is much flexible. | REST is a robust methodology and API design architecture used to implement web services. |
| It follows client-driven architecture. | It follows server-driven architecture. |
| It does not deal with the dedicated resources. | It deals with the dedicated resources. |
| It has a single endpoint that takes dynamic parameters. | It has multiple endpoints. |
| It provides stateless servers and structured access to resources. | It provides stateless servers and flexible controlled access to resources. |
| It is elastic in nature. | It is not rigid in nature. |
| It supports only JSON format. | It supports XML, JSON, HTML, YAML, and other formats also. |
| The client defines response data that it needs via a query language. | Data represented as resources over HTTP through URI. |
| It provides synchronous and asynchronous communication in multiple protocols such as HTTP, MQTT, AMQP. | It provides synchronous communication through HTTP only. |
| Its design based on HTTP (status, methods, and URI). | Its design based on message exchange. |
| It provides high consistency across all platforms. | It is difficult to achieve high consistency across all platforms. |
| Development speed is fast. | Development speed is slow. |