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.

Start From the Schema

Write every operation against the project's schema, not against the examples in this guide.

  1. Find the schema before you write anything. Check the schema entry in codegen.ts, graphql.config.*, or apollo.config.*, then look for *.graphql SDL files.
  2. Use only the fields, arguments, and enum values that the schema defines. Field names in this guide, such as updatedAt or orderBy: { field: CREATED_AT, direction: DESC }, are illustrations.
  3. Save the operation as a document next to the client's existing operations. Leave the server schema unchanged unless the user asks for a schema change.

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 read the project's schema first, and use only the fields, arguments, and enum values it defines
  • 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-federation
apollographql
Apollo Federation एकाधिक GraphQL API (उपग्राफ) को एक एकीकृत सुपरग्राफ में संयोजित करने में सक्षम बनाता है।
apollo-ios
apollographql
Apollo iOS एप्पल प्लेटफॉर्म के लिए एक मजबूत टाइप वाला GraphQL क्लाइंट है। यह आपके GraphQL ऑपरेशन और स्कीमा से Swift प्रकार उत्पन्न करता है, और एक async/await क्लाइंट, एक सामान्यीकृत कैश (इन-मेमोरी या SQLite-समर्थित), एक प्लग करने योग्य इंटरसेप्टर-आधारित HTTP ट्रांसपोर्ट जो क्वेरी, म्यूटेशन और मल्टीपार्ट सब्सक्रिप्शन को संभालता है, और एक वैकल्पिक WebSocket ट्रांसपोर्ट (graphql-transport-ws) जो किसी भी ऑपरेशन
apollo-router
apollographql
अपोलो राउटर एक उच्च-प्रदर्शन ग्राफ राउटर है जो रस्ट में लिखा गया है और अपोलो फेडरेशन 2 सुपरग्राफ चलाने के लिए है। यह आपके सबग्राफ के सामने बैठता है और क्वेरी योजना, निष्पादन और प्रतिक्रिया संरचना को संभालता है।
apollo-router-plugin-creator
apollographql
अपोलो राउटर के लिए मूल रस्ट प्लगइन बनाएं।
apollo-server
apollographql
Apollo Server 5.x के साथ विभिन्न फ्रेमवर्कों पर GraphQL सर्वर बनाने के लिए पूर्ण मार्गदर्शिका। इसमें स्कीमा परिभाषा, रिज़ॉल्वर, संदर्भ सेटअप, और TypeScript समर्थन के साथ त्रुटि प्रबंधन शामिल है। प्रोटोटाइपिंग के लिए स्टैंडअलोन मोड और Express, Fastify, Koa, तथा सर्वरलेस वातावरण के साथ एकीकरण का समर्थन करता है। इसमें रिज़ॉल्वर पैटर्न, प्रमाणीकरण/अधिकार, प्लगइन्स, N+1 रोकथाम के लिए DataLoader, और प्रदर्शन
graphql-schema
apollographql
We need to translate the given English text to Hindi. The text is a description of a guide for GraphQL schema design. We must preserve the name "graphql-schema" but it's not in the text, so ignore. No extra labels. Translate only the text inside <text>. Output should be the translated text in Hindi. Let me translate: "Industry best practices guide for designing intuitive, performant, and maintainable GraphQL schemas. Covers core design principles including client-centric type organization, explicit nullability patterns, and backwards-compatible evolution strategies Provides reference documentation on types, naming conventions, cursor-based pagination, error modeling, and security considerations Includes practical patterns for interfaces, unions, input types, mutations, and ID strategies with code examples..." I'll translate into natural Hindi, keeping technical terms like GraphQL, cursor-based pagination, etc. as is or with appropriate Hindi transliteration. Ensure no extra commentary. Translation attempt: "सहज, उच्च प्रदर्शन और रखरखाव योग्य GraphQL स्कीम
rover
apollographql
Apollo Rover CLI ग्राफक्यूएल स्कीमा, फेडरेशन और स्थानीय सुपरग्राफ विकास के प्रबंधन के लिए है। सबग्राफ स्कीमा प्रकाशित करें, प्राप्त करें और मान्य करें; स्थानीय रूप से या GraphOS के माध्यम से फेडरेटेड सुपरग्राफ बनाएं। इसमें स्कीमा जाँच (प्री-डिप्लॉय मान्यकरण), लिंटिंग और चल रहे सर्वरों से इंट्रोस्पेक्शन शामिल है। rover dev कमांड विकास वर्कफ़्लो के लिए स्वचालित स्कीमा संयोजन के साथ एक स्थानीय
rust-best-practices
apollographql
अपोलो ग्राफक्यूएल की सर्वोत्तम प्रथाओं की हैंडबुक पर आधारित प्राकृतिक रस्ट कोडिंग मानक। नौ मुख्य क्षेत्रों को शामिल करता है: कोडिंग शैलियाँ और मुहावरे, क्लिप्पी लिंटिंग, प्रदर्शन अनुकूलन, त्रुटि प्रबंधन, परीक्षण पैटर्न, जेनेरिक्स और डिस्पैच, टाइप स्टेट पैटर्न, दस्तावेज़ीकरण, और पॉइंटर सुरक्षा। क्लोनिंग पर उधार लेने, thiserror/anyhow के साथ Result-आधारित त्रुटि प्रबंधन, और रिल