• Preface
◦ How the Book Is Structured
◦ About the Updates
◦ What’s New in Version 0.3?
◦ Warescription
◦ Book Bug Bounty
◦ Source Code and Its License
◦ Creative Commons and the Four-to-Free (42F) Guarantee
◦ Acknowledgments
• GraphQL in Five Minutes
◦ Step #1: Gotta Get a GraphiQL
◦ Step #2: Drafting a Document
◦ Step #3: Making the Request
◦ Step #4: Looking at the Docs
• The Role of GraphQL
◦ So, What Did We Just Do?
◦ What Exactly is GraphQL?
◦ GraphQL Design Principles
◦ Key GraphQL Features
◦ GraphQL Compared To…
• Top-Level GraphQL Terms
◦ Document
◦ Operation
◦ Operation Name
◦ Arguments and Variables
◦ Mutations and Objects
◦ Errors
• GraphQL Test Environments
◦ The Test Server
◦ GitHub
◦ And Now, Onwards and Upwards!
• Basic Dynamic GraphQL in Android
◦ Dynamic vs. Static
◦ GraphQL and HTTP
◦ Using OkHttp for GraphQL
◦ Getting a Parsed Response
◦ Can’t We Do Better Than Maps of Objects?
• Basic Static GraphQL in Android
◦ Android Apps and Code Generation
◦ Introducing Apollo and Apollo-Android
◦ Using Apollo-Android
◦ Names and Apollo-Android
◦ Was All of This Worth It?
• Objects, Fields, and Types
◦ Introducing the GraphQL Schema Definition Language
◦ Objects
◦ Fields
◦ Data Types in GraphQL
◦ Type Modifiers
◦ Trip, In Schema Definition Language
• Fragments
◦ The Role of Fragments
◦ Creating a Fragment
◦ Using a Fragment
◦ Fragments, And Your Output
◦ Fragments and Your Android Code
◦ Where Apollo-Android Generated Code Gets Generated
• Arguments and Variables
◦ Arguments
◦ Variables
◦ Variables in Android
◦ A Little Bit of CRUD
• Aliases
◦ Applying Aliases
◦ One, Two, Many, Lots
◦ Aliases with Apollo-Android
◦ GraphQL Execution Rules
• Interfaces, Unions, and Inline Fragments
◦ Interfaces
◦ Unions
◦ Interfaces, Unions, and Apollo-Android
• Miscellaneous GraphQL Syntax
◦ Arguments on Nested Fields
◦ Directives
◦ Deprecations
• Introspection
◦ Adding a Type To Your Response
◦ Introspection Beyond the Type Name
• Authentication and the Viewer Pattern
◦ Convention Over Specification
◦ What You Get Stems From Who You Are
◦ Exploring GitHub’s Approach
• Queries and Paging
◦ Taking a Page from GitHub
◦ Examining the Query and Its Results
◦ Please, GitHub, Can I Have Some More?
◦ Paging with Apollo-Android
• Securing GraphQL
◦ Securing the Network
• Testing GraphQL
◦ Testing Using a Real Server
◦ Mocking the Apollo-Android Response
◦ Mocking the OkHttp Response
◦ Mocking the Server Response
• Advanced Apollo-Android
◦ Support for Scalar Types