mirror of
https://github.com/ByteByteGoHq/system-design-101.git
synced 2026-04-01 16:57:23 -04:00
Improve "REST vs GraphQL" (#44)
- Update REST vs GraphQL text - Fix typos and errors in diagram
This commit is contained in:
25
README.md
25
README.md
@@ -153,19 +153,34 @@ Architecture styles define how different components of an application programmin
|
||||
|
||||
### REST API vs. GraphQL
|
||||
|
||||
The diagram below shows a quick comparison between REST and GraphQL.
|
||||
When it comes to API design, REST and GraphQL each have their own strengths and weaknesses.
|
||||
|
||||
The diagram below shows a quick comparison between REST and GraphQL.
|
||||
|
||||
<p>
|
||||
<img src="images/graphQL.jpg">
|
||||
</p>
|
||||
|
||||
- GraphQL is a query language for APIs developed by Meta. It provides a complete description of the data in the API and gives clients the power to ask for exactly what they need.
|
||||
REST
|
||||
|
||||
- GraphQL servers sit in between the client and the backend services.
|
||||
GraphQL can aggregate multiple REST requests into one query. GraphQL server organizes the resources in a graph.
|
||||
- Uses standard HTTP methods like GET, POST, PUT, DELETE for CRUD operations.
|
||||
- Works well when you need simple, uniform interfaces between separate services/applications.
|
||||
- Caching strategies are straightforward to implement.
|
||||
- The downside is it may require multiple roundtrips to assemble related data from separate endpoints.
|
||||
|
||||
GraphQL
|
||||
|
||||
- Provides a single endpoint for clients to query for precisely the data they need.
|
||||
- Clients specify the exact fields required in nested queries, and the server returns optimized payloads containing just those fields.
|
||||
- Supports Mutations for modifying data and Subscriptions for real-time notifications.
|
||||
- Great for aggregating data from multiple sources and works well with rapidly evolving frontend requirements.
|
||||
- However, it shifts complexity to the client side and can allow abusive queries if not properly safeguarded
|
||||
- Caching strategies can be more complicated than REST.
|
||||
|
||||
The best choice between REST and GraphQL depends on the specific requirements of the application and development team. GraphQL is a good fit for complex or frequently changing frontend needs, while REST suits applications where simple and consistent contracts are preferred.
|
||||
|
||||
Neither API approach is a silver bullet. Carefully evaluating requirements and tradeoffs is important to pick the right style. Both REST and GraphQL are valid options for exposing data and powering modern applications.
|
||||
|
||||
- GraphQL supports queries, mutations (applying data modifications to resources), and subscriptions (receiving notifications on schema modifications).
|
||||
|
||||
### How does gRPC work?
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 567 KiB After Width: | Height: | Size: 410 KiB |
Reference in New Issue
Block a user