เริ่มต้นใช้งาน
เริ่มต้นใช้งานแนะนำ GraphQL และ Gato GraphQL

แนะนำ GraphQL และ Gato GraphQL

ยินดีต้อนรับสู่คู่มือ Gato GraphQL ที่นี่คุณจะพบข้อมูลมากมายเกี่ยวกับการติดตั้ง การตั้งค่า และการใช้งานปลั๊กอิน Gato GraphQL บนเว็บไซต์ WordPress ของคุณ

GraphQL คืออะไร

GraphQL เป็นข้อกำหนดของ API ที่ช่วยให้ไคลเอนต์ (เช่น เว็บไซต์ในเบราว์เซอร์ หรือแอปมือถือ) สามารถระบุข้อมูลที่ต้องการได้อย่างแม่นยำ และเซิร์ฟเวอร์ที่ใช้งาน API จะดึงข้อมูลนั้นมาให้อย่างตรงเป้า

GraphQL query มีลักษณะดังนี้:

query {
  posts {
    id
    title
    content
    author {
      id
      name
    }
  }
}

การตอบสนองจากเซิร์ฟเวอร์อยู่ในรูปแบบ JSON ซึ่งมีข้อมูลในโครงสร้างเดียวกับ query มีลักษณะดังนี้:

{
  "data": {
    "posts": [
      {
        "id": 1,
        "title": "Hello world",
        "content": "<p>How are you doing?</p>",
        "author": {
          "id": 1,
          "name": "Leo"
        }
      },
      {
        "id": 2,
        "title": "Scheduled post",
        "content": "<p>This post is scheduled to be published in the future.</p>",
        "author": {
          "id": 2,
          "name": "Markus"
        }
      },
      {
        "id": 3,
        "title": "Lorem ipsum",
        "content": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>",
        "author": {
          "id": 3,
          "name": "Socrates"
        }
      }
    ]
  }
}

เซิร์ฟเวอร์ GraphQL ยังสามารถ "mutate" (คือสร้างและอัปเดต) ข้อมูลได้ด้วย ในกรณีนี้ คำสำคัญของการดำเนินการ query จะต้องถูกแทนที่ด้วย mutation:

mutation {
  createPost(input: {
    title: "New post",
    contentAs: { html: "Lorem ipsum dolor sit amet" }
  }) {
    id
    status
  }
}

ดูเว็บไซต์ GraphQL อย่างเป็นทางการได้ที่ graphql.org

Gato GraphQL คืออะไร

Gato GraphQL เป็นปลั๊กอินสำหรับ WordPress ที่แปลงไซต์ให้กลายเป็นเซิร์ฟเวอร์ GraphQL ช่วยให้คุณดึงและแก้ไขข้อมูลจากเว็บไซต์ WordPress โดยใช้ภาษา GraphQL

Gato GraphQL มุ่งเน้นที่จะเป็น:

ใช้งานง่าย

ปรัชญาของ WordPress คือทุกคน ไม่ว่าจะมีทักษะด้านเทคนิคหรือไม่ ต้องสามารถใช้ซอฟต์แวร์ได้ ปลั๊กอินนี้พยายามตอบสนองปรัชญานั้น โดยทำให้การสร้าง API และการโต้ตอบกับมันง่ายที่สุดเท่าที่จะเป็นไปได้

ตัวอย่างเช่น Gato GraphQL ช่วยให้สามารถเผยแพร่ persisted queries (ซึ่งเป็น endpoint ที่แสดงข้อมูลที่กำหนดไว้ล่วงหน้า คล้ายกับ REST endpoints) โดยใช้อินเทอร์เฟซผู้ใช้ที่ WordPress editor มีให้ คล้ายกับการเขียนโพสต์ ทุกคนสามารถเข้าถึงได้

รวดเร็ว

การประมวลผล GraphQL query โดยทั่วไปต้องทำการวนซ้ำผ่านกราฟที่มีข้อมูลของเอนทิตีทั้งหมดที่ถูก query ยิ่งมีโหนดในกราฟมาก และกราฟมีความลึกมาก กระบวนการนี้ก็จะยิ่งใช้เวลานานขึ้น (อาจช้าลงแบบเอกซ์โพเนนเชียล)

Gato GraphQL ใช้แนวทางที่แตกต่างออกไป: ใช้โครงสร้างโมเดลคอมโพเนนต์ในการประมวลผล GraphQL query (แทนที่จะใช้กราฟ) ซึ่งเป็นกระบวนการที่เพิ่มขึ้นแบบเชิงเส้นตามความลึกของ query (ไม่ใช่แบบเอกซ์โพเนนเชียล)

นอกจากนี้ เฉพาะองค์ประกอบของ schema ที่ถูกร้องขอใน GraphQL query เท่านั้นที่จะถูกคอมไพล์ ตรวจสอบ และดำเนินการ ไม่ใช่ schema GraphQL ทั้งหมด ดังนั้น ไม่ว่าเว็บไซต์ WordPress ของคุณจะมี Custom Post Types ติดตั้งอยู่ 3 หรือ 30 ประเภท เวลาในการประมวลผล query จะเท่าเดิม

ทรงพลัง

API ทำหน้าที่เป็นเกตเวย์หลักสำหรับการโต้ตอบระหว่างไคลเอนต์กับเซิร์ฟเวอร์ สิ่งสำคัญคือ API ต้องไม่ถูกจำกัดในด้านใดๆ เพื่อให้สามารถตอบสนองความต้องการได้ทุกประการ

ปลั๊กอินนี้ช่วยให้สามารถปรับเปลี่ยนผลลัพธ์ของการดำเนินการ query ผ่านฟังก์ชันที่กำหนดเอง API ภายนอก และบริการบนคลาวด์ ข้อมูลที่ถูก query สามารถวนซ้ำและจัดการตามต้องการ และผลลัพธ์ของ query ก็สามารถเปลี่ยนแปลงได้ตามที่ต้องการ ดังนั้นแทบไม่มีสิ่งใดที่ทำไม่ได้

ปลอดภัย

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

ปลั๊กอินนี้ให้ความสำคัญกับความปลอดภัยอย่างมาก และได้นำมาตรการรักษาความปลอดภัยหลายอย่างมาใช้โดยพื้นฐาน สามารถปิดใช้งาน single endpoint ได้ ข้อมูลสามารถเปิดเผยผ่าน persisted queries การให้สิทธิ์การเข้าถึงข้อมูลทำผ่าน access control lists ที่ปรับแต่งได้ (อิงตามสถานะการล็อกอินของผู้ใช้ การมีบทบาทหรือสิทธิ์บางอย่าง หรือกฎที่กำหนดเอง) และ API สามารถกำหนดให้เป็นสาธารณะหรือส่วนตัวได้

มองไปสู่อนาคต

GraphQL เป็นมาตรฐานที่ยังคงพัฒนาอยู่เสมอ และชุมชนยังคงเสนอแนวคิดเพื่อให้ฟังก์ชันการทำงานใหม่ๆ ถูกเพิ่มเข้าไปในข้อกำหนดในอนาคต

ปลั๊กอินนี้ไม่ชอบรอ มันได้รวมฟังก์ชันใหม่ๆ มากมายที่ถูกเสนอแล้ว (เช่น schema namespacing, multiple query execution และอื่นๆ) ไว้เป็นฟีเจอร์แบบ opt-in แล้ว ดังนั้นผู้ดูแลระบบจะต้องเปิดใช้งานอย่างชัดเจน