apollo-connectors

โดย apollographql

รวม REST API เข้ากับ GraphQL supergraphs โดยใช้ @source และ @connect directives มีกระบวนการ 5 ขั้นตอนที่มีโครงสร้าง: ศึกษาโครงสร้าง API, ใช้ schema กับ directives, ตรวจสอบผ่าน rover supergraph compose, ดำเนินการ connectors, และทดสอบครอบคลุม รองรับการกำหนดค่าคำขอรวมถึง headers, body payloads, การทำ batch สำหรับรูปแบบ N+1, และการแทรกตัวแปรสภาพแวดล้อมผ่าน $env จัดการการแมปการตอบสนองด้วยการเลือกฟิลด์, การตั้งชื่ออื่น, การเลือกย่อยสำหรับข้อมูลที่ซ้อนกัน, และ entity...

npx skills add https://github.com/apollographql/skills --skill apollo-connectors

Apollo Connectors Schema Assistant

MCP Tools

If GraphOS MCP Tools are available, use them:

  • connectors-spec: Fetch the complete Connectors specification before starting any connector work
  • apollo_docs_search: Search for relevant documentation
  • apollo_docs_read: Read specific documentation pages by slug

Documentation paths by topic:

  • Requests: /graphos/connectors/requests/url, /headers, /body, /batching
  • Responses: /graphos/connectors/responses/fields, /error-handling
  • Mapping: /graphos/connectors/mapping, /arrays, /enums, /literals
  • Entities: /graphos/connectors/entities, /patterns

Process

Follow this 5-step process. DO NOT skip any steps.

Step 1: Research

  • Understand the API being called and the structure of responses
  • Ask the user for example API responses if not provided
  • Fetch relevant documentation from MCP tools or reference files
  • DO NOT write any code until research is complete

Step 2: Implement

  • Create the schema using the template below
  • Follow the grammar, methods, and variables in the reference files
  • Ask clarifying questions if unsure about requirements

Step 3: Validate (Compose)

  • Run rover supergraph compose --config ./supergraph.yaml
  • Fix any composition errors before proceeding

Step 4: Execute

  • Run rover connector run --schema <file> -c "<Type.field>" -v "{}"
  • Verify the connector executes correctly

Step 5: Test

  • Create or update test files under /tests/
  • Run rover connector test
  • Ensure full test coverage for each connector

Schema Template

# Note to AI Friends: This is an Apollo Connectors schema. You should use your connectors-spec MCP tool if you have it available before editing this file.

extend schema
  @link(url: "https://specs.apollo.dev/federation/v2.15")
  @link(url: "https://specs.apollo.dev/connect/v0.3", import: ["@source", "@connect"])

@source(name: "api_name", http: { baseURL: "https://api.example.com" })

type Query {
  example(id: ID!): Example
    @connect(
      source: "api_name"
      http: { GET: "/example/{$args.id}" }
      selection: """
      id
      name
      """
    )
}

type Example {
  id: ID!
  name: String
}

Version requirements

Use the latest Long-Term Support (LTS) versions of Apollo Federation and Apollo Connectors. Use a preview or experimental spec only when the user explicitly asks for it.

Confirm the current LTS before writing @link URLs or federation_version. Prefer the GraphOS docs tools when they are available:

  • Federation: read /graphos/schema-design/federated-schemas/reference/versions and use the highest version marked LTS. That version is the schema @link (https://specs.apollo.dev/federation/vX.Y). Set federation_version in supergraph.yaml to the latest patch of that same LTS line.
  • Connectors: read /graphos/connectors/getting-started/version-requirements and /graphos/connectors/reference/changelog. Use the latest Connectors spec that is generally available (not marked experimental) and compatible with that Federation LTS (https://specs.apollo.dev/connect/vX.Y).

The template above uses the current LTS: Federation v2.15 and Connectors v0.3. If the docs list a newer LTS, use the docs.

Reference Files

Before implementing connectors, read the relevant reference files:

Key Rules

Selection Mapping

  • Prefer sub-selections over ->map for cleaner mappings
  • Do NOT use $ when selecting fields directly from root
  • Field aliasing: newName: originalField (only when renaming)
  • Sub-selection: fieldName { ... } (to map nested content)
# DO - Direct sub-selection for arrays
$.results {
  firstName: name.first
  lastName: name.last
}

# DO NOT - Unnecessary root $
$ {
  id
  name
}

# DO - Direct field selection
id
name

Entities

  • Add @connect on a type to make it an entity (no @key needed)
  • Create entity stubs in parent selections: user: { id: userId }
  • When you see an ID field (e.g., productId), create an entity relationship
  • Each entity should have ONE authoritative subgraph with @connect

Literal Values

Use $() wrapper for literal values in mappings:

$(1)              # number
$(true)           # boolean
$("hello")        # string
$({"a": "b"})     # object

# In body
body: "$({ a: $args.a })"  # CORRECT
body: "{ a: $args.a }"     # WRONG - will not compose

Headers

http: {
  GET: "/api"
  headers: [
    { name: "Authorization", value: "Bearer {$env.API_KEY}" },
    { name: "X-Forwarded", from: "x-client" }
  ]
}

Batching

Convert N+1 patterns using $batch:

type Product @connect(
  source: "api"
  http: {
    POST: "/batch"
    body: "ids: $batch.id"
  }
  selection: "id name"
) {
  id: ID!
  name: String
}

Ground Rules

  • NEVER make up syntax or directive values not in this specification
  • NEVER use --elv2-license accept (for humans only)
  • ALWAYS ask for example API responses before writing code
  • ALWAYS validate with rover supergraph compose after changes
  • ALWAYS create entity relationships when you see ID fields
  • Prefer $env over $config for environment variables
  • Use rover dev for running Apollo Router locally

Skills เพิ่มเติมจาก apollographql

apollo-federation
apollographql
Apollo Federation ช่วยให้สามารถรวม GraphQL API หลายตัว (ซับกราฟ) เข้าด้วยกันเป็นซูเปอร์กราฟแบบรวมศูนย์
apollo-ios
apollographql
Apollo iOS เป็น GraphQL ไคลเอนต์แบบ strongly-typed สำหรับแพลตฟอร์ม Apple โดยสร้างประเภท Swift จากการดำเนินการและสคีมา GraphQL ของคุณ และมาพร้อมกับไคลเอนต์แบบ async/await, แคชแบบ normalized (ในหน่วยความจำหรือ backed โดย SQLite), การขนส่ง HTTP แบบ interceptor-based ที่เสียบได้ซึ่งจัดการ queries, mutations, และ multipart subscriptions, และการขนส่ง WebSocket แบบเลือกได้ (graphql-transport-ws) ที่สามารถรองรับการดำเนินการทุกประเภท
apollo-router
apollographql
Apollo Router เป็นกราฟเราเตอร์ประสิทธิภาพสูงที่เขียนด้วยภาษา Rust สำหรับรันซูเปอร์กราฟของ Apollo Federation 2 โดยจะอยู่ด้านหน้าซับกราฟของคุณและจัดการการวางแผนคิวรี การดำเนินการ และการประกอบคำตอบ
apollo-router-plugin-creator
apollographql
สร้างปลั๊กอิน Rust ดั้งเดิมสำหรับ Apollo Router
apollo-server
apollographql
คู่มือฉบับสมบูรณ์สำหรับการสร้างเซิร์ฟเวอร์ GraphQL ด้วย Apollo Server 5.x ในทุกเฟรมเวิร์ก ครอบคลุมการกำหนดสคีมา ตัวแก้ไข การตั้งค่าคอนเทกซ์ และการจัดการข้อผิดพลาดพร้อมรองรับ TypeScript รองรับโหมดสแตนด์อโลนสำหรับการสร้างต้นแบบ และการผสานรวมกับ Express, Fastify, Koa และสภาพแวดล้อมแบบไร้เซิร์ฟเวอร์ รวมถึงรูปแบบตัวแก้ไข การรับรองความถูกต้อง/การอนุญาต ปลั๊กอิน DataLoader สำหรับป้องกันปัญหา N+1 และเทคนิคการปรับปรุงประสิทธิภาพ ให้เอกสารอ้างอิงสำหรับแหล่งข้อมูล ข้อผิดพลาด...
graphql-operations
apollographql
คู่มือแนวทางปฏิบัติที่ดีที่สุดสำหรับการเขียน GraphQL operations ที่มีประสิทธิภาพและปลอดภัยต่อชนิดข้อมูล พร้อมการจัดระเบียบด้วย fragments ครอบคลุม queries, mutations, subscriptions และ fragments พร้อมหลักการตั้งชื่อ ไวยากรณ์ตัวแปร และการใช้ directives เน้นหลักการสำคัญ: ขอเฉพาะฟิลด์ที่จำเป็น ตั้งชื่อ operations ทั้งหมด ใช้ตัวแปรแทนค่าคงที่ และรวมฟิลด์ id เพื่อให้แคชได้ แนะนำให้วาง fragments ไว้ร่วมกับ components และใช้ directives @include / @skip สำหรับฟิลด์แบบมีเงื่อนไข...
graphql-schema
apollographql
คู่มือแนวปฏิบัติที่ดีที่สุดในอุตสาหกรรมสำหรับการออกแบบ GraphQL schemas ที่ใช้งานง่าย มีประสิทธิภาพสูง และบำรุงรักษาได้ ครอบคลุมหลักการออกแบบหลัก เช่น การจัดระเบียบประเภทที่เน้นผู้ใช้เป็นศูนย์กลาง รูปแบบการกำหนดค่า nullability ที่ชัดเจน และกลยุทธ์การพัฒนาที่เข้ากันได้ย้อนหลัง มีเอกสารอ้างอิงเกี่ยวกับประเภท หลักการตั้งชื่อ การแบ่งหน้าแบบ cursor-based การสร้างแบบจำลองข้อผิดพลาด และข้อควรพิจารณาด้านความปลอดภัย รวมถึงรูปแบบที่ใช้งานได้จริงสำหรับ interfaces, unions, input types, mutations และกลยุทธ์ ID พร้อมตัวอย่างโค้ด...
rover
apollographql
Apollo Rover CLI สำหรับจัดการ GraphQL schemas, federation และการพัฒนา supergraph ในเครื่อง เผยแพร่ ดึงข้อมูล และตรวจสอบความถูกต้องของ subgraph schemas; ประกอบ supergraph แบบ federated ในเครื่องหรือผ่าน GraphOS รวมถึงการตรวจสอบ schema (การตรวจสอบก่อน deploy), การ linting และการ introspection จากเซิร์ฟเวอร์ที่กำลังทำงาน คำสั่ง rover dev เริ่ม Router ในเครื่องพร้อมการประกอบ schema อัตโนมัติสำหรับขั้นตอนการพัฒนา รองรับรูปแบบ CI/CD ด้วยการตรวจสอบก่อนเผยแพร่และเอาต์พุต JSON สำหรับการเขียนสคริปต์ ต้องมี...