Recently IBM has acquired GraphQL startup StepZen to step up its game in API management. StepZen, a 2020 startup provides GraphQL deployments for hybrid cloud environments. This brings us to the question, why GraphQL API fascinates enterprises in 2023?
State of GraphQL Report
We studied The State of GraphQL report 2022 to trace the vibes around GraphQL and our key findings are:
- 61.8% of the developers are happy with the overall state of the ecosystem
- 47.9% of the developers use GraphQL for exposing an API intended for a personal website or app.
- 62.3% of clients that connect to GraphQL APIs include browsers.
- 55.4% of GraphQL APIs hit databases, while 35% consume REST APIs and 14.6% eat other GraphQL endpoints.
Many advanced features go unused
- Only 25% of users realize they have used live queries.
- Users haven’t heard about many advanced features like
@skip, @specifiedBy, @defer, @stream.
- Very low usage and awareness about performance and security features like query timeouts, query rate limiting, and query cost analysis.
Developers often seek to combine, aggregate, or merge GraphQL schemas from different APIs
- Apollo Federation is the most common schema used by 22.5% of respondents.
- Next.js is the most popular framework.
- PostgreSQL is the most common database used.
- Preferred IDEs of developers consist of GraphiQL, GraphQL Playground, Postman, Apollo Studio, and Insomnia.
The Background of GraphQL
GraphQL was created by Facebook as an alternative to existing REST and SOAP protocols to handle complex queries through a single endpoint.
It is a query language and server-side runtime for APIs.
A GraphQL server provides a client with a predefined schema. With GraphQL clients can exactly specify the data they need. Having the schema before querying, a client can validate their query against it to make sure the server will be able to respond to the query.
Based on the graph data modeling with the schema at its core, GraphQL has three primary operations:
- Query for reading data
- Mutation for writing data
- Subscription for automatically receiving real-time data over time.
This schema is one of the major advantages of GraphQL over REST API giving complete control to decide which data to return.
Advantages of GraphQL API
GraphQL doesn’t require multiple endpoints. A single query can give all the data as the queries, mutations, and subscriptions
Suitable for complex systems and microservices
GraphQL can integrate multiple APIs behind and hide their complexity. In legacy systems infrastructure GraphQL can fetch data from multiple sources and bind them in GraphQL format.
While dealing with microservices GraphQL API gateway consolidates the various individual schemas of microservices in use to one global schema.
Type checking and validation
GraphQL’s introspection is a developer’s tool that allows to query a GraphQL server and introspect the types and fields of underlying schemas. This helps them to develop in a specific manner that apps only ask for what’s possible and in the appropriate format.
This also ensures there is no need to validate the data on the client side as GraphQL takes care.
Code-sharing with Fragments
Fields in GraphQL queries which are common to multiple queries can be reused and shared at a higher component level as
Fragments. They help in maintaining a single schema field while getting different data.
subscriptions send real-time messages to clients from the server. It can be set up to send automatic notifications to the client whenever a new comment or data is added.
GraphQL API Advantages Over REST API
When we compare various types of API architecture we find GraphQL API to offer certain advantages, especially over the most popular one REST.
Challenges of GraphQL
- Complex queries with too many nested fields or improper queries puts load on the server affecting performance.
- Overkill for small applications.
- Web caching of HTTP methods, URL patterns , and other resources is difficult due to a single endpoint.
- Since GraphQL doesn’t understand file, a file uploading feature is not included in its specification.
- A learning curve is involved before adopting GraphQL, especially the Schema Definition Language.
- API maintainers additionally have to create maintainable GraphQL schemas.
GraphQL Tools For API Developers
Hygraph This API-centric Content Management System (CMS) provides tooling to manage content structures that require programmatically sharing data. Being API-equipped, Hygraph offers a more flexible management layer for end user interfaces than traditional CMSs.
GraphQL Docs quickly generates simple, functional documentation given a GraphQL endpoint URL. GraphDoc is an alternative that is good for generating and hosting GraphQL docs on your own.
GraphQL Network is a Chrome devtool with a “network”-style tab allowing for easy debugging.
GraphQL Bindings This auto-generated software development kit enables reusing and sharing GraphQL APIs as modular building blocks.
GraphQL CLI is a command line tool for common GraphQL development workflows.
GraphQL Boilerplates is a flexible starter kit for backend-only and fullstack GraphQL projects.
GraphQL Config Supported by most tools, editors, and IDEs, GraphQL Config lets you easily configure the dev environment with your GraphQL schema.
GraphQL Voyager By running data through this tool, you’ll be able to visualize data relations, as GraphQL Voyager represents GraphQL APIs as interactive graphs. On setting a root schema, you can view field-type connections and quickly navigate through them.
GraphQL For Future
GraphQL will not immediately replace REST and other existing APIs but they have certain advantageous features on offer for the API developers which are worth trying. The open source nature of GraphQL ensures testing in diverse real-life scenarios and a comprehensive contribution to development of features. The growing community of GraphQL testifies to the fact that GraphQL brings value and will continue to gain popularity in the near future.