# When to Use GraphQL — Web Architecture Patterns ![rw-book-cover](https://readwise-assets.s3.amazonaws.com/media/uploaded_book_covers/profile_70552/1gP9-S54G35x9U0jkhKTMGA.jpeg) URL:: https://medium.com/@JeffLombardJr/when-and-why-to-use-graphql-24f6bce4839d Author:: Jeff Long ## AI-Generated Summary Design Patterns. Not another ‘How to’ guide. ## Highlights > Simply put, **GraphQL** is a query language that lets you write queries using an object structure rather than a text string. ([View Highlight](https://read.readwise.io/read/01ffss7ynfpn96n61py209myaw)) > { > projects { > id > name > description > } > } ([View Highlight](https://read.readwise.io/read/01ffss87f2cp1gvcaz6dtm6jcf)) > ![](https://miro.medium.com/max/10000/1*oI0gd6_n6-E9K_NcHgMhUw.png?q=20000000) > A RESTful architecture example. ([View Highlight](https://read.readwise.io/read/01ffssakjnqcmehd9ywvw8bfxw)) > ![](https://miro.medium.com/max/10000/1*-S7vILUNs2sABozisfBQVw.png?q=20000000) > A GraphQL architecture example. ([View Highlight](https://read.readwise.io/read/01ffssamj13c0073z1w7nfzvwb)) > We don’t have to worry about the endpoints. This follows a fundamental programming principle of [reducing complexity through abstraction](https://en.wikipedia.org/wiki/Abstraction_principle_(computer_programming)). In addition, we also don’t have to worry about all of the `POST/GET/UPDATE/DELETE` calls,`200 OK` server response codes, and [even some caching on certain clients](https://www.apollographql.com/docs/react/advanced/caching.html). ([View Highlight](https://read.readwise.io/read/01ffssa5f8a0jyekf4ea5a58kx)) > Use when you want to aggregate data from multiple places into one convenient api. ([View Highlight](https://read.readwise.io/read/01ffssbdkachjwf3qb5srh5wwr)) > ![](https://miro.medium.com/max/10000/1*Zv40o5M183Ejk6bhB25KGw.png?q=20000000) > A composite design pattern with GraphQL. ([View Highlight](https://read.readwise.io/read/01ffssber4ggrvcbetr6qbx8d4)) > Proxy Pattern ([View Highlight](https://read.readwise.io/read/01ffssbkj07a1m5ycavzkv09xd)) > Use when you want to add functionality to an old api. ([View Highlight](https://read.readwise.io/read/01ffssbm3mpxmmyd13wqry535m)) > ![](https://miro.medium.com/max/10000/1*d9FYrp9aGIPTEu4GRqgspQ.png?q=20000000) > A proxy design pattern with GraphQL. ([View Highlight](https://read.readwise.io/read/01ffssbn4mafwm7b4cxnq57ecz)) > Facade Pattern ([View Highlight](https://read.readwise.io/read/01ffssbrvaep2sjnhg5gtwkdz8)) > Use when you want to simplify a complex api. ([View Highlight](https://read.readwise.io/read/01ffssbshm69zzmpw3va3wpr8z)) > ![](https://miro.medium.com/max/10000/1*LsjlCJLOC1561MysSVJSTA.png?q=20000000) > A facade design pattern with GraphQL. ([View Highlight](https://read.readwise.io/read/01ffssbwaztm9xww0rt1bwyjgq))