Dec 10, 2025

จะสร้าง GraphQL API ได้อย่างไร

ฝากข้อความ

เฮ้! ในฐานะผู้ให้บริการ API ฉันได้เห็นโดยตรงแล้วว่า GraphQL กลายเป็นเกม ผู้เปลี่ยนโลกของ API ได้อย่างไร ในบล็อกนี้ ฉันจะอธิบายวิธีสร้าง GraphQL API ให้คุณทราบ

ทำความเข้าใจพื้นฐาน GraphQL

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

ลองจินตนาการว่าคุณกำลังสร้างแอปที่ต้องการข้อมูลผู้ใช้ ด้วย REST API คุณอาจมีจุดสิ้นสุดเช่น/ผู้ใช้/:idที่ส่งคืนข้อมูลผู้ใช้ทั้งหมด ซึ่งบางข้อมูลแอปของคุณอาจไม่ได้ใช้ด้วยซ้ำ แต่ด้วย GraphQL ลูกค้าสามารถส่งข้อความค้นหาดังนี้:

แบบสอบถาม { ผู้ใช้ (id: "123") { อีเมลชื่อ } }

และมันจะได้รับเพียงชื่อและอีเมลช่องของผู้ใช้ที่มี ID123-

การตั้งค่าสภาพแวดล้อม

หากต้องการสร้าง GraphQL API คุณจะต้องมีเครื่องมือบางอย่าง เซิร์ฟเวอร์ที่ได้รับความนิยมมากที่สุดสำหรับการสร้างเซิร์ฟเวอร์ GraphQL คือ Apollo Server ซึ่งทำงานได้ดีกับ Node.js ดังนั้น หากคุณยังไม่ได้ติดตั้ง ให้ติดตั้ง Node.js บนเครื่องของคุณ

เมื่อคุณเปิดใช้งาน Node.js แล้ว ให้สร้างไดเร็กทอรีใหม่สำหรับโปรเจ็กต์ของคุณและไปที่ไดเร็กทอรีในเทอร์มินัลของคุณ จากนั้นเริ่มต้นโปรเจ็กต์ Node.js ใหม่โดยการรัน:

npm เริ่มต้น -y

สิ่งนี้จะสร้างแพ็คเกจ.jsonไฟล์ในไดเร็กทอรีโครงการของคุณ

ถัดไป ติดตั้ง Apollo Server และ GraphQL:

npm ติดตั้ง apollo-server graphql

การกำหนดสคีมา

สคีมาเป็นหัวใจของ GraphQL API โดยจะกำหนดประเภทของข้อมูลที่ลูกค้าสามารถสอบถามและความสัมพันธ์ระหว่างข้อมูลเหล่านั้น

สมมติว่าเรากำลังสร้าง API สำหรับไลบรารีแบบง่าย เราอาจจะมีประเภทสำหรับหนังสือ-ผู้เขียน, และประเภท- ต่อไปนี้คือวิธีที่คุณสามารถกำหนดสคีมาพื้นฐานใน JavaScript:

const { gql } = ต้องการ ('apollo-server'); const typeDefs = หนังสือประเภท gql` { id: ID! ชื่อเรื่อง : สตริง! ผู้เขียน: ผู้เขียน! ประเภท: ประเภท! } พิมพ์ผู้แต่ง { id: ID! ชื่อ : สตริง! หนังสือ: [หนังสือ!]! } ประเภทประเภท { id: ID! ชื่อ : สตริง! หนังสือ: [หนังสือ!]! } พิมพ์แบบสอบถาม { หนังสือ: [หนังสือ!]! หนังสือ(id: ID!): ผู้แต่งหนังสือ: [ผู้แต่ง!]! ผู้แต่ง(id: ID!): ประเภทผู้แต่ง: [ประเภท!]! ประเภท(id: ID!): ประเภท } `; module.exports = typeDefs;

ในสคีมานี้ เราได้กำหนดสามประเภท (หนังสือ-ผู้เขียน, และประเภท) และกแบบสอบถามประเภทที่ช่วยให้ลูกค้าดึงข้อมูลได้ ที่-สัญลักษณ์หมายความว่าจำเป็นต้องกรอกข้อมูล

รีโซลเวอร์

ตัวแก้ไขคือฟังก์ชันที่บอก GraphQL ถึงวิธีรับข้อมูลสำหรับแต่ละฟิลด์ในสคีมา ตัวอย่างเช่น ตัวแก้ไขสำหรับหนังสือสนามในแบบสอบถามtype อาจดึงรายการหนังสือจากฐานข้อมูล

ต่อไปนี้เป็นชุดตัวแก้ไขอย่างง่ายสำหรับไลบรารี API ของเรา:

const { หนังสือ ผู้แต่ง ประเภท } = need('./data'); const solvers = { แบบสอบถาม: { หนังสือ: () => หนังสือ, หนังสือ: (parent, { id }) => books.find(book => book.id === id), authors: () => authors, author: (parent, { id }) => authors.find(author => author.id === id), ประเภท: () => ประเภท, ประเภท: (parent, { id }) => ประเภท.find(genre => ประเภท.id === id) }, หนังสือ: { author: (book) => authors.find(author => author.id === book.authorId), ประเภท: (book) => ประเภท.find(genre => ประเภท.id === book.genreId) }, ผู้แต่ง: { หนังสือ: (author) => books.filter(book => book.authorId === author.id) }, ประเภท: { หนังสือ: (ประเภท) => books.filter(book => book.genreId === ประเภท.id) } }; module.exports = ตัวแก้ไข;

ในโค้ดนี้ เราถือว่าเรามีข้อมูลตัวอย่างบางส่วนอยู่ในข้อมูล.jsไฟล์. ตัวแก้ไขสำหรับแบบสอบถามtype ส่งคืนข้อมูลที่เหมาะสม และตัวแก้ไขสำหรับประเภทอื่นจะจัดการความสัมพันธ์ระหว่างประเภทนั้น

การสร้างเซิร์ฟเวอร์

ตอนนี้เรามีสคีมาและรีโซลเวอร์แล้ว ก็ถึงเวลาสร้าง Apollo Server

const { ApolloServer } = ต้องการ ('apollo-server'); const typeDefs = ต้องการ ('./schema'); ตัวแก้ไข const = ต้องการ ('./ ตัวแก้ไข'); เซิร์ฟเวอร์ const = ApolloServer ใหม่ ({ typeDefs, ตัวแก้ไข }); server.listen().then(({ url }) => { console.log(`เซิร์ฟเวอร์พร้อมที่ ${url}`); });

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

การทดสอบ API

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

ตัวอย่างเช่น คุณสามารถเขียนแบบสอบถามเพื่อรับหนังสือทั้งหมด:

แบบสอบถาม { หนังสือ { ผู้แต่งชื่อ { ชื่อ } } }

แบบสอบถามนี้จะส่งคืนรายชื่อหนังสือพร้อมชื่อหนังสือและชื่อผู้แต่ง

ความปลอดภัยและประสิทธิภาพ

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

เพื่อประสิทธิภาพ คุณสามารถใช้เทคนิคต่างๆ เช่น การแคชและการแบทช์ Apollo Server มีการสนับสนุนแคชในตัว และคุณสามารถใช้ไลบรารีได้เช่นตัวโหลดข้อมูลสำหรับการร้องขอฐานข้อมูลเป็นกลุ่ม

Eliminate Phlegm 93-14-1 GMP GuaifenesinAnastrozole

บูรณาการกับระบบที่มีอยู่

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

บทสรุป

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

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

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

อ้างอิง

  • เอกสารประกอบเซิร์ฟเวอร์ Apollo
  • ข้อกำหนด GraphQL
  • เอกสาร Node.js
ส่งคำถาม