GraphQL Flashcards

🔗 GraphQL Flashcards

❓ What is GraphQL?

GraphQL is an open-source query language for APIs and a runtime that allows clients to request exactly what they need—and nothing more. :contentReference[oaicite:1]{index=1}

🎯 Precise Data Fetching

Clients specify the data shape in their query, avoiding both over-fetching and under-fetching. :contentReference[oaicite:2]{index=2}

📏 Strongly Typed Schema

GraphQL APIs are defined by a schema that outlines types, fields, and relationships—enabling validation and auto-documentation. :contentReference[oaicite:3]{index=3}

🔀 Single Endpoint API

Unlike REST, GraphQL uses a single endpoint to serve all queries, often reducing network complexity. :contentReference[oaicite:4]{index=4}

🛠 Operations: Queries & Mutations

Supports queries to fetch data and mutations to modify it. Also supports subscriptions for real-time updates. :contentReference[oaicite:5]{index=5}

🧪 Introspection & Tooling

Built-in introspection enables tools like GraphiQL, code generation, and schema exploration. :contentReference[oaicite:6]{index=6}

⚔ GraphQL vs. REST

GraphQL delivers flexible, client-controlled data fetching via a single endpoint; REST relies on fixed endpoints and verbs. :contentReference[oaicite:7]{index=7}

💡 Evolving APIs Without Versioning

GraphQL schemas can evolve gracefully by deprecating fields—without breaking existing clients. :contentReference[oaicite:8]{index=8}

🌐 Multi-Language Support

Client and server implementations exist across languages—JavaScript, Python, Java, Go, Ruby, and more. :contentReference[oaicite:9]{index=9}

🆕 Built at Facebook

Originated at Facebook in 2012 and open-sourced in 2015. Governed now by the GraphQL Foundation under the Linux Foundation. :contentReference[oaicite:10]{index=10}

⚠️ Caching Can Be Tricky

Because queries are dynamic, caching responses at the server or edge is more complex than with REST. :contentReference[oaicite:11]{index=11}

🛡 Security Testing

GraphQL security requires care; tools like GraphQLer help detect vulnerabilities like access control and injection flaws. :contentReference[oaicite:12]{index=12}