# Course 37 - Building Web Apps with Ruby On Rails | Episode 18:Navigating GraphQL and the Graphiti Middle Ground Page: https://stenobird.com/podcast/cybercode-academy-7578615/course-37-building-web-apps-with-ruby-on-rails-episode-18-navigating-graphql-and-the-graphiti-middle-ground Text version: https://stenobird.com/podcast/cybercode-academy-7578615/course-37-building-web-apps-with-ruby-on-rails-episode-18-navigating-graphql-and-the-graphiti-middle-ground.md Podcast: [CyberCode Academy](https://stenobird.com/podcast/cybercode-academy-7578615) Published: 2026-07-01T06:00:03+00:00 Episode link: https://www.spreaker.com/episode/course-37-building-web-apps-with-ruby-on-rails-episode-18-navigating-graphql-and-the-graphiti-middle-ground--72405589 Audio file: https://dts.podtrac.com/redirect.mp3/api.spreaker.com/download/episode/72405589/from_rest_to_graphql_to_graphiti.mp3 Processing state: not_requested JSON: https://stenobird.com/v1/public/podcasts/cybercode-academy-7578615/episodes/course-37-building-web-apps-with-ruby-on-rails-episode-18-navigating-graphql-and-the-graphiti-middle-ground Duration seconds: 1283 ## Resource In this lesson, you’ll learn about: REST limitations, GraphQL fundamentals, and the hybrid approach with Graphiti1. The Problem with REST APIsUsing REST:🔹 Key limitations: Overfetching Client receives more data than needed Underfetching Requires multiple requests to get all data No strict typing Errors happen at runtime Heavy reliance on documentation 👉 Key Insight REST is simple and scalable—but not always efficient2. Example of Overfetching🔹 Request:GET /users/1 🔹 Response:{ "id": 1, "name": "John", "email": "john@example.com", "address": "...", "preferences": "...", "settings": "..." } 👉 Problem: Client may only need name 👉 Key Insight REST responses are fixed by the server, not flexible for clients3. Introducing GraphQLUsing GraphQL:🔹 What it solves: Clients request exactly what they need 🔹 Example query:{ user(id: 1) { name } } 👉 Response:{ "data": { "user": { "name": "John" } } } 👉 Key Insight GraphQL eliminates overfetching and underfetching4. GraphQL Schema (Core Concept)🔹 Schema: Defines types and relationships Acts as a contract between client and server 🔹 Example:type User { id: ID name: String email: String } 👉 Key Insight GraphQL is strongly typed, unlike REST5. Queries vs Mutations🔹 Queries (read data):{ users { name } } 🔹 Mutations (write data):mutation { createUser(name: "John") { id } } 👉 Key Insight GraphQL separates read and write operations clearly6. Testing with GraphiQL🔹 Tool: GraphiQL 🔹 Features: Run queries in browser Explore schema Debug 👉 Key Insight GraphiQL improves developer experience significantly7. Downsides of GraphQL🔹 Trade-offs: No native HTTP caching More complex setup Boilerplate code No strict naming conventions 👉 Key Insight GraphQL flexibility comes with added complexity8. Introducing Graphiti (Hybrid Approach)Using Graphiti:🔹 Go… ## Actions - request_transcript: `POST https://stenobird.com/v1/public/podcasts/cybercode-academy-7578615/episodes/course-37-building-web-apps-with-ruby-on-rails-episode-18-navigating-graphql-and-the-graphiti-middle-ground/transcription-requests` — Idempotently request low-priority transcript generation for this episode. - read_markdown: `GET https://stenobird.com/podcast/cybercode-academy-7578615/course-37-building-web-apps-with-ruby-on-rails-episode-18-navigating-graphql-and-the-graphiti-middle-ground.md` — Read the agent-friendly Markdown representation of this episode resource. A page view does not enqueue transcription. Agents should invoke `request_transcript` explicitly when they need this episode processed. ## Transcript Full transcripts are not published on public pages unless there is a clear rights basis.