简体   繁体   中英

What's the difference between GraphQL and rest api

I want to know what are all reasons of qraphQL to be used instead of rest api .

As much I know instead of making multiple requests (to reduce HTTP request), can make a group of HTTP requests in one request using graphQL .

Can anybody describe little more, please?

Thanks in advance.

There are many articles covering this question in more details available on the internet. I am trying to give a short overview here.

GraphQL offers a couple of advantages over REST.

Main difference

In a REST interface, everything is about resources. For example, you'd get the resources "car" with ID 25 and ID 83 by calling an endpoint like this:

GET /cars/25
GET /cars/83

Note, how you have to call the interface twice. The endpoint ("cars") and your resource are coupled.

In GraphQL you could get both cars with one call, using this example query:

GET /api?query={ car(ids: [25, 83]) { model, manufacturer { address } } }

Note, how you even specified the exact data you want to fetch (model, manufacturer and its address). Compared to REST, the endpoint ("api") is not resource-specific anymore.

Some advantages

  • As already mentioned in the question, you can reduce the amount of HTTP operations with the help of GraphQL queries (avoid underfetching).
  • By specifying exactly, which data you want to fetch, you are able to reduce the overhead being transmitted over the interface (avoid overfetching).
  • By using flexible queries with GraphQL, you're more likely to avoid coupling the interface consumer too tight to the producer by not implementing exactly the requirements of a specific consumer into a REST interface with defined endpoints.
  • Because each consumer exactly specifies which data is required with GraphQL, you can gather more detailed statistics on data usage in your backend.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM