GraphQL - บทนำ

GraphQL เป็นเทคโนโลยีฝั่งเซิร์ฟเวอร์แบบโอเพนซอร์สซึ่งพัฒนาโดย Facebook เพื่อเพิ่มประสิทธิภาพการเรียก RESTful API เป็นเครื่องมือดำเนินการและภาษาแบบสอบถามข้อมูล ในบทนี้เราจะพูดถึงข้อดีของการใช้ GraphQL

ทำไมต้อง GraphQL

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

ต่อไปนี้เป็นข้อดีของการใช้ GraphQL query Language -

ขอสิ่งที่คุณต้องการ - และรับมัน

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

ตัวอย่างต่อไปนี้จะช่วยให้คุณเข้าใจสิ่งนี้ได้ดีขึ้น -

ขอให้เราพิจารณาวัตถุธุรกิจนักศึกษามีคุณลักษณะid, ชื่อ, นามสกุลและcollegeName สมมติว่าความต้องการใช้โทรศัพท์มือถือสามารถดึงข้อมูลเพียงfirstNameและรหัส หากเราออกแบบจุดสิ้นสุด REST เช่น/ api / v1 / studentsมันจะจบลงด้วยการดึงข้อมูลสำหรับฟิลด์ทั้งหมดสำหรับอ็อบเจ็กต์นักเรียน ซึ่งหมายความว่าข้อมูลถูกดึงมาโดยบริการ RESTful มากเกินไป ปัญหานี้สามารถแก้ไขได้โดยใช้ GraphQL

พิจารณาแบบสอบถาม GraphQL ที่ระบุด้านล่าง -

{
   students {
      id
      firstName
   }
}

สิ่งนี้จะส่งคืนค่าสำหรับฟิลด์ id และ firstname เท่านั้น แบบสอบถามจะไม่ดึงค่าสำหรับแอตทริบิวต์อื่น ๆ ของวัตถุนักเรียน การตอบสนองของข้อความค้นหาที่แสดงด้านบนเป็นดังที่แสดงด้านล่าง -

{
   "data": {
      "students": [
         {
            "id": "S1001",
            "firstName": "Mohtashim"
         },
         {
            "id": "S1002",
            "firstName": "Kannan"
         }
      ]
   }
}

รับทรัพยากรมากมายในคำขอเดียว

การสืบค้น GraphQL ช่วยในการดึงข้อมูลทางธุรกิจที่เกี่ยวข้องได้อย่างราบรื่นในขณะที่ REST API ทั่วไปต้องการการโหลดจาก URL หลายรายการ GraphQL API จะดึงข้อมูลทั้งหมดที่แอปพลิเคชันของคุณต้องการในคำขอเดียว แอปพลิเคชันที่ใช้ GraphQL สามารถทำงานได้อย่างรวดเร็วแม้ในการเชื่อมต่อเครือข่ายมือถือที่ช้า

ให้เราพิจารณาอีกหนึ่งวัตถุทางธุรกิจวิทยาลัยซึ่งมีคุณลักษณะ: ชื่อและที่ตั้ง นักศึกษาวัตถุธุรกิจมีความสัมพันธ์เชื่อมโยงกับวัตถุวิทยาลัย ถ้าเราจะใช้ REST API เพื่อดึงข้อมูลรายละเอียดของนักเรียนและวิทยาลัยของพวกเขาเราจะสิ้นสุดการทำสองหน้าไปยังเซิร์ฟเวอร์เช่น/ API / v1 / นักศึกษาและ/ API / v1 / วิทยาลัย ซึ่งจะนำไปสู่การดึงข้อมูลในแต่ละคำขอ ดังนั้นแอปพลิเคชันมือถือจึงถูกบังคับให้โทรไปยังเซิร์ฟเวอร์หลายครั้งเพื่อรับข้อมูลที่ต้องการ

อย่างไรก็ตามแอปพลิเคชันมือถือสามารถดึงรายละเอียดของวัตถุทั้งนักศึกษาและวิทยาลัยได้ในคำขอเดียวโดยใช้ GraphQL

ต่อไปนี้เป็นแบบสอบถาม GraphQL เพื่อดึงข้อมูล -

{
   students{
      id
      firstName
      lastName
      college{
         name
         location
      }
   }
}

ผลลัพธ์ของข้อความค้นหาข้างต้นประกอบด้วยฟิลด์ที่เราร้องขอตามที่แสดงด้านล่าง -

{
   "data": {
      "students": [
         {
            "id": "S1001",
            "firstName": "Mohtashim",
            "lastName": "Mohammad",
            "college": {
               "name": "CUSAT",
               "location": "Kerala"
            }
         },
         
         {
            "id": "S1002",
            "firstName": "Kannan",
            "lastName": "Sudhakaran",
            "college": {
               "name": "AMU",
               "location": "Uttar Pradesh"
            }
         },
         
         {
            "id": "S1003",
            "firstName": "Kiran",
            "lastName": "Panigrahi",
            "college": {
               "name": "AMU",
               "location": "Uttar Pradesh"
            }
         }
      ]
   }
}

อธิบายสิ่งที่เป็นไปได้ด้วยระบบประเภท

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

ตัวอย่างประเภทข้อมูลนักศึกษาและวิทยาลัยมีให้ด้านล่าง -

type Query {
   students:[Student]
}

type Student {
   id:ID!
   firstName:String
   lastName:String
   fullName:String
   college:College
}

type College {
   id:ID!
   name:String
   location:String
   rating:Float
   students:[Student]
}

เคลื่อนที่ได้เร็วขึ้นด้วยเครื่องมือสำหรับนักพัฒนาที่มีประสิทธิภาพ

GraphQL มีเครื่องมือสำหรับนักพัฒนามากมายสำหรับการจัดทำเอกสารและการทดสอบแบบสอบถาม GraphiQL เป็นเครื่องมือที่ยอดเยี่ยมที่สร้างเอกสารของแบบสอบถามและสคีมา นอกจากนี้ยังมีเครื่องมือแก้ไขแบบสอบถามเพื่อทดสอบ GraphQL API และความสามารถในการเติมโค้ดอัจฉริยะในขณะที่สร้างแบบสอบถาม