graphql-operations

द्वारा apollographql

कुशल, टाइप-सुरक्षित GraphQL ऑपरेशन लिखने और उन्हें फ्रैगमेंट के साथ व्यवस्थित करने के लिए सर्वोत्तम अभ्यास मार्गदर्शिका। इसमें नामकरण परंपराओं, वेरिएबल सिंटैक्स और डायरेक्टिव उपयोग के साथ क्वेरी, म्यूटेशन, सब्सक्रिप्शन और फ्रैगमेंट शामिल हैं। मुख्य सिद्धांतों पर जोर देती है: केवल आवश्यक फ़ील्ड का अनुरोध करें, सभी ऑपरेशनों को नाम दें, हार्डकोडेड मानों के बजाय वेरिएबल का उ

npx skills add https://github.com/apollographql/skills --skill graphql-operations

GraphQL Operations Guide

This guide covers best practices for writing GraphQL operations (queries, mutations, subscriptions) as a client developer. Well-written operations are efficient, type-safe, and maintainable.

Operation Basics

Query Structure

query GetUser($id: ID!) {
  user(id: $id) {
    id
    name
    email
  }
}

Mutation Structure

mutation CreatePost($input: CreatePostInput!) {
  createPost(input: $input) {
    id
    title
    createdAt
  }
}

Subscription Structure

subscription OnMessageReceived($channelId: ID!) {
  messageReceived(channelId: $channelId) {
    id
    content
    sender {
      id
      name
    }
  }
}

Quick Reference

Operation Naming

PatternExample
QueryGetUser, ListPosts, SearchProducts
MutationCreateUser, UpdatePost, DeleteComment
SubscriptionOnMessageReceived, OnUserStatusChanged

Variable Syntax

# Required variable
query GetUser($id: ID!) { ... }

# Optional variable with default
query ListPosts($first: Int = 20) { ... }

# Multiple variables
query SearchPosts($query: String!, $status: PostStatus, $first: Int = 10) { ... }

Fragment Syntax

# Define fragment
fragment UserBasicInfo on User {
  id
  name
  avatarUrl
}

# Use fragment
query GetUser($id: ID!) {
  user(id: $id) {
    ...UserBasicInfo
    email
  }
}

Directives

query GetUser($id: ID!, $includeEmail: Boolean!) {
  user(id: $id) {
    id
    name
    email @include(if: $includeEmail)
  }
}

query GetPosts($skipDrafts: Boolean!) {
  posts {
    id
    title
    draft @skip(if: $skipDrafts)
  }
}

Key Principles

1. Request Only What You Need

# Good: Specific fields
query GetUserName($id: ID!) {
  user(id: $id) {
    id
    name
  }
}

# Avoid: Over-fetching
query GetUser($id: ID!) {
  user(id: $id) {
    id
    name
    email
    bio
    posts {
      id
      title
      content
      comments {
        id
      }
    }
    followers {
      id
      name
    }
    # ... many unused fields
  }
}

2. Name All Operations

# Good: Named operation
query GetUserPosts($userId: ID!) {
  user(id: $userId) {
    posts {
      id
      title
    }
  }
}

# Avoid: Anonymous operation
query {
  user(id: "123") {
    posts {
      id
      title
    }
  }
}

3. Use Variables, Not Inline Values

# Good: Variables
query GetUser($id: ID!) {
  user(id: $id) {
    id
    name
  }
}

# Avoid: Hardcoded values
query {
  user(id: "123") {
    id
    name
  }
}

4. Colocate Fragments with Components

// UserAvatar.tsx
export const USER_AVATAR_FRAGMENT = gql`
  fragment UserAvatar on User {
    id
    name
    avatarUrl
  }
`;

function UserAvatar({ user }) {
  return <img src={user.avatarUrl} alt={user.name} />;
}

Reference Files

Detailed documentation for specific topics:

  • Queries - Query patterns and optimization
  • Mutations - Mutation patterns and error handling
  • Fragments - Fragment organization and reuse
  • Variables - Variable usage and types
  • Tooling - Code generation and linting

Ground Rules

  • ALWAYS name your operations (no anonymous queries/mutations)
  • ALWAYS use variables for dynamic values
  • ALWAYS request only the fields you need
  • ALWAYS include id field for cacheable types
  • NEVER hardcode values in operations
  • NEVER duplicate field selections across files
  • PREFER fragments for reusable field selections
  • PREFER colocating fragments with components
  • USE descriptive operation names that reflect purpose
  • USE @include/@skip for conditional fields

apollographql की और Skills

apollo-client
apollographql
Apollo Client एक व्यापक स्टेट मैनेजमेंट लाइब्रेरी है जो जावास्क्रिप्ट के लिए है, जो आपको GraphQL के साथ स्थानीय और दूरस्थ डेटा दोनों को प्रबंधित करने में सक्षम बनाती है। संस्करण 4.x बेहतर कैशिंग, बेहतर TypeScript समर्थन, और React 19 अनुकूलता लाता है।
official
apollo-client
apollographql
Apollo Client 4.x के साथ React एप्लिकेशन बनाने के लिए व्यापक गाइड, जिसमें क्वेरी, म्यूटेशन, कैशिंग और स्टेट मैनेजमेंट शामिल हैं। यह कई React फ्रेमवर्क और सेटअप को सपोर्ट करता है: क्लाइंट-साइड ऐप्स (Vite, CRA), React सर्वर कंपोनेंट्स के साथ Next.js App Router, स्ट्रीमिंग SSR के साथ React Router 7, और TanStack Start। इसमें क्वेरी (useQuery, useLazyQuery), म्यूटेशन (useMutation), और आधुनिक React 18+ और 19 के लिए Suspense-आधारित पैटर्न (useSuspenseQuery,
official
apollo-connectors
apollographql
REST APIs को @source और @connect निर्देशों का उपयोग करके GraphQL सुपरग्राफ में एकीकृत करें। एक संरचित 5-चरणीय प्रक्रिया प्रदान करता है: API संरचना पर शोध करें, निर्देशों के साथ स्कीमा लागू करें, rover supergraph compose के माध्यम से मान्य करें, कनेक्टर निष्पादित करें, और परीक्षण कवरेज करें। हेडर, बॉडी पेलोड, N+1 पैटर्न के लिए बैचिंग, और $env के माध्यम से पर्यावरण चर इंजेक्शन सहित अनुरोध कॉन्फ़िगरेशन का समर्थन करता है। फ़ील्ड चयन,
official
apollo-federation
apollographql
Apollo Federation एकाधिक GraphQL API (उपग्राफ) को एक एकीकृत सुपरग्राफ में संयोजित करने में सक्षम बनाता है।
official
apollo-ios
apollographql
Apollo iOS एप्पल प्लेटफॉर्म के लिए एक मजबूत टाइप वाला GraphQL क्लाइंट है। यह आपके GraphQL ऑपरेशन और स्कीमा से Swift प्रकार उत्पन्न करता है, और एक async/await क्लाइंट, एक सामान्यीकृत कैश (इन-मेमोरी या SQLite-समर्थित), एक प्लग करने योग्य इंटरसेप्टर-आधारित HTTP ट्रांसपोर्ट जो क्वेरी, म्यूटेशन और मल्टीपार्ट सब्सक्रिप्शन को संभालता है, और एक वैकल्पिक WebSocket ट्रांसपोर्ट (graphql-transport-ws) जो किसी भी ऑपरेशन
official
apollo-kotlin
apollographql
Apollo Kotlin एक मजबूत टाइप किया गया GraphQL क्लाइंट है जो आपके GraphQL संचालन और स्कीमा से Kotlin मॉडल उत्पन्न करता है, जिसका उपयोग Android, JVM और Kotlin मल्टीप्लेटफ़ॉर्म प्रोजेक्ट्स में किया जा सकता है।
official
apollo-mcp-server
apollographql
एआई एजेंटों को मॉडल कॉन्टेक्स्ट प्रोटोकॉल के माध्यम से GraphQL API से जोड़ता है, जिसमें अंतर्निहित इंट्रोस्पेक्शन और ऑपरेशन टूल्स शामिल हैं। GraphQL ऑपरेशन को MCP टूल के रूप में प्रस्तुत करता है; तीन ऑपरेशन स्रोतों का समर्थन करता है: स्थानीय फ़ाइलें, GraphOS Studio संग्रह, और स्थायी क्वेरी मैनिफेस्ट। स्कीमा अन्वेषण और तदर्थ क्वेरी परीक्षण के लिए चार इंट्रोस्पेक्शन टूल (introspect, search, validate, execute) प्रदान करता है;
official
apollo-router
apollographql
अपोलो राउटर एक उच्च-प्रदर्शन ग्राफ राउटर है जो रस्ट में लिखा गया है और अपोलो फेडरेशन 2 सुपरग्राफ चलाने के लिए है। यह आपके सबग्राफ के सामने बैठता है और क्वेरी योजना, निष्पादन और प्रतिक्रिया संरचना को संभालता है।
official