Share E-Book
Scan to open this page

Scan with your phone to open this page

Author: Samer Buna

Reduce bandwidth demands on your APIs by getting only the results you need—all in a single request! The GraphQL query language simplifies interactions with web servers, enabling smarter API queries that can hugely improve the efficiency of data requests. In GraphQL in Action, you'll learn how to bring those benefits to your own APIs, giving your clients the power to ask for exactly what they need from your server, no more, no less. Practical and example-driven, this book teaches everything you need to get started with GraphQL—from design principles and syntax right through to performance optimization. About the Technology GraphQL APIs are fast, efficient, and easy to maintain. They reduce app latency and server cost while boosting developer productivity. This powerful query layer offers precise control over API requests and returns, making apps faster and less prone to error. About the book GraphQL in Action gives you the tools to get comfortable with the GraphQL language, build and optimize a data API service, and use it in a front-end client application. By working through set up, security, and error handling you'll learn to create a complete GraphQL server. You'll also unlock easy ways to incorporate GraphQL into your existing codebase so you can build simple, scalable data APIs. What's inside • Define a GraphQL schema for relational and document databases • Implement GraphQL types using both the schema language and object constructor methods • Optimize GraphQL resolvers with data caching and batching • Design GraphQL fragments that match UI components' data requirements • Consume GraphQL API queries, mutations, and subscriptions with and without a GraphQL client library About the reader For web developers familiar with client-server applications. About the author Samer Buna has over 20 years of experience in software development including front-ends, back-ends, API design, and scalability.

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
【One-Line Pitch】 A practical, example-driven guide to designing, building, and consuming GraphQL APIs, from query syntax through schema design to resolver performance. Best for web developers who already know client-server basics and want to ship a real GraphQL service rather than just read about one. 【Book Arc】 - **Opening (~0%–10%)**: Frames why GraphQL exists—comparing it to REST round-trips and imperative fetching—and introduces the type system as the core idea. Solves the "what problem does this actually fix?" question. - **Early (~10%–30%)**: Teaches the query language hands-on via GraphiQL and the GitHub API: fields, arguments, aliases, directives, fragments, interfaces, unions, and pagination metadata. Solves "how do I read and write GraphQL requests?" - **Middle (~30%–50%)**: Moves from consuming to designing—schema modeling for a real app (AZdev) across PostgreSQL and MongoDB, plus union/interface search patterns and enum validation. Solves "how do I shape an API around real UI needs?" - **Late (~50%–80%)**: Builds the server: resolvers, mutations, authentication/authorization, error handling, and the N+1 problem with DataLoader-style batching and caching. Solves "how do I make this correct and fast?" - **Ending (~80%–100%)**: Connects the API to a front-end client, covering queries, mutations, and subscriptions with and without a client library, plus fragments matched to UI components. Solves "how do I actually consume this in an app?" 【Key Takeaways】 - **GraphQL is a query language plus a strong type system**, not a database or transport (Opening): it lets clients ask for exactly the fields they need and lets servers aggregate multiple data sources behind one endpoint. - **REST's pain is round-trips and over-fetching** (Early): the book's Star Wars example shows six requests to satisfy one view, motivating GraphQL's single-request model. - **Fragments are primarily a composition tool, not just DRY** (Early–Middle): their real value is matching data requirements to reusable UI components, with inline fragments handling unions and interfaces. - **Schema design should follow UI needs** (Middle): the AZdev example models Tasks, Approaches, and Users, using unions/interfaces for search and enums for validated fields—and paginates every list field. - **N+1 queries are GraphQL's signature performance trap** (Late): because each field resolves independently, naive resolvers fire one database call per field; batching/caching utilities like DataLoader are the standard remedy. - **A complete server needs more than resolvers** (Late): authentication, authorization, error handling, and caching are treated as first-class concerns, not afterthoughts. - **You can consume GraphQL with or without a client library** (Ending): the book covers both paths for queries, mutations, and subscriptions, so you understand what a client library abstracts away. 【Reading Tips】 - Read in sequence and follow the code listings—the author explicitly recommends this, and the project builds cumulatively. - Deep-read the schema-design and resolver-performance chapters (Middle–Late); these are where most real-world GraphQL mistakes happen. - Skim the GitHub API examples in the Early chapters if you already know query syntax; return to them as reference for unions and pagination. - Treat the N+1/DataLoader discussion as the single most transferable lesson—apply it to any GraphQL server you build. - Keep PostgreSQL and MongoDB basics handy; the book uses both but doesn't teach them from scratch. 【Coverage Limits】 The excerpts cover the book's framing, query-language fundamentals, schema design, and the N+1/DataLoader problem well, but the later server-implementation and client-consumption chapters are represented only by their summaries; specific code details there are not covered by the excerpts.
Excerpt 1
t-ends, back-ends, API design, and scalability. Samer Buna M A N N I N G xii CONTENTS 7.4 Using DataLoader with custom IDs for caching 190 The taskMainList f...
View in text
Excerpt 2
. Then, to read the planet’s name, you ask GET - /planets/1 And to read the film titles, you ask GET - /films/1 GET - /films/2 GET - /films/3 GET - /films/6...
View in text
Excerpt 3
s returned by a list. Let’s see examples for both features. In GitHub, a repository can have a list of projects to manage any work related to that repository...
View in text
Excerpt 4
did for GitHub’s issueOrPullRequest example in chapter 3). With a union implementation, this is the query a consumer can use to implement the search feature....
View in text
Excerpt 5
, "api-server": "(cd api && nodemon -r esm src/server.js)", "web-server": "(cd web/src && rimraf .cache dist && parcel index.html)", "start-blank-dbs": "dock...
View in text
Excerpt 6
skMainList field with a list of Task objects, each of these objects had a value in its userId property. For each one, we have to execute another SQL statemen...
View in text
Excerpt 7
an be made available only under the taskInfo root field and not under the taskMainList field (where it is actually not needed in the UI). Check out the AZdev...
View in text
Excerpt 8
tation, here’s a request you can use in GraphiQL. Listing 8.13 Example mutation request to test userCreate mutation userCreate { userCreate(input: { username...
View in text
Tags
AI categories
ProgrammingWeb TechnologyBackend
ISBN: 161729568X
Publish Year: 2021
Language: English
Pages: 385
File Format: PDF
File Size: 21.7 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…