การกำหนดค่า Schema
การกำหนดค่า Schemaการ queries ฟิลด์ 'self'

การ queries ฟิลด์ 'self'

บางครั้งเราจำเป็นต้องปรับเปลี่ยนรูปแบบของการตอบสนอง เพื่อจำลองการตอบสนองเดียวกันจาก GraphQL server อื่น หรือจาก REST API

เราสามารถทำได้ผ่านฟิลด์ self ที่ถูกเพิ่มเข้าไปในทุกประเภทในสคีมา GraphQL ซึ่งจะส่งคืนอ็อบเจ็กต์เดิมที่ถูกนำไปใช้:

type QueryRoot {
  self: QueryRoot!
}
 
type Post {
  self: Post!
}
 
type User {
  self: User!
}

วิธีการทำงาน

ฟิลด์ self ช่วยให้สามารถเพิ่มระดับพิเศษให้กับ query โดยไม่ต้องออกจากอ็อบเจ็กต์ที่กำลัง queries อยู่ การรัน query นี้:

{
  __typename
  self {
    __typename
  }
  
  post(by: {id: 1}) {
    self {
      id
      __typename
    }
  }
  
  user(by: {id: 1}) {
    self {
      id
      __typename
    }
  }
}

...จะได้รับการตอบสนองดังนี้:

{
  "data": {
    "__typename": "QueryRoot",
    "self": {
      "__typename": "QueryRoot"
    },
    "post": {
      "self": {
        "id": 1,
        "__typename": "Post"
      }
    },
    "user": {
      "self": {
        "id": 1,
        "__typename": "User"
      }
    }
  }
}

วิธีการใช้งาน

ใช้ self เพื่อเพิ่มระดับพิเศษที่จำเป็นสำหรับการตอบสนองโดยเทียม และใช้ field aliases เพื่อตั้งชื่อระดับเหล่านั้นให้เหมาะสม

ตัวอย่างเช่น query นี้สร้างรูปแบบของ GraphQL server อื่นขึ้นมาใหม่:

{
  categories: self {
    edges: postCategories {
      node: self {
        name
        slug
      }
    }
  }
}

query นี้สร้างรูปแบบของ WP REST API ขึ้นมาใหม่:

{
  post(by: {id: 1}) {
    content: self {
      rendered: content
    }
  }
}

การเพิ่มฟิลด์ self ไปยัง endpoints

การเพิ่มฟิลด์ self ไปยังสคีมาสามารถกำหนดค่าได้ดังนี้ เรียงตามลำดับความสำคัญ:

✅ โหมดเฉพาะสำหรับ custom endpoint หรือ persisted query ที่กำหนดไว้ในการกำหนดค่าสคีมา

Adding self fields to the schema, set in the Schema configuration

✅ โหมดเริ่มต้น ที่กำหนดไว้ในการตั้งค่า

หากการกำหนดค่าสคีมามีค่าเป็น "Default" ระบบจะใช้โหมดที่กำหนดไว้ในการตั้งค่า:

การตั้งค่า self fields สำหรับการกำหนดค่าสคีมา ในหน้าการตั้งค่า
การตั้งค่า self fields สำหรับการกำหนดค่าสคีมา ในหน้าการตั้งค่า

เมื่อใดควรใช้

ฟิลด์ self สามารถใช้เพื่อปรับรูปแบบของการตอบสนอง GraphQL ให้เข้ากับรูปแบบเฉพาะที่ต้องการ เช่น รูปแบบจาก GraphQL server อื่น หรือจาก REST API