หลักการออกแบบ GraphQL API
เรียนรู้พื้นฐานของ GraphQL ซึ่งรวมถึงสคีมา คำค้น การกลายพันธุ์ และการสมัครรับข้อมูล เพื่อการออกแบบ API ที่ยืดหยุ่น
หลักการออกแบบ GraphQL API เป็นบทเรียน Node.js Backend Development Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Node.js Backend Development Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Node.js Backend Development Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
What is GraphQL?
Welcome to GraphQL API Design! GraphQL is a powerful query language for your APIs and a runtime for fulfilling those queries with your existing data.
Think of it as a way for clients (like your mobile app) to ask for exactly the data they need, no more, no less. It's an alternative to traditional REST APIs.

GraphQL vs. REST APIs
While REST APIs typically have multiple endpoints, each returning a fixed data structure, GraphQL uses a single endpoint.
- REST: Often leads to over-fetching (getting more data than needed) or under-fetching (needing multiple requests for related data).
- GraphQL: Solves this by allowing clients to specify the data shape, reducing network requests and improving efficiency.
The Core: GraphQL Schema
At the heart of every GraphQL API is its schema. The schema defines the entire API's capabilities: what data can be queried, what data can be modified, and what types of data exist.
It acts as a contract between the client and the server, ensuring both sides understand the available operations and data structures.
Schema Definition Language (SDL)
GraphQL schemas are written using the Schema Definition Language (SDL). It's a simple, intuitive language for defining types and operations.
Let's look at a basic example of defining a User type with some fields:
type User {
id: ID!
name: String!
email: String
age: Int
}Understanding SDL Types
In the previous example:
type User: Defines a new object type namedUser.id: ID!:idis a field of typeID. The!means it's non-nullable (always present).String,Int,ID: These are scalar types, GraphQL's built-in basic data types.- You can also define custom object types like
PostorComment.
Root Type: Query
The Query root type is special. It defines all the entry points for reading data from your API. Think of these as the 'GET' operations in REST.
Here's how you might add operations to fetch users or a single user by ID:
type Query {
users: [User!]!
user(id: ID!): User
}
type User {
id: ID!
name: String!
email: String
age: Int
}Executing a GraphQL Query
Once the Query type is defined, clients can request data. They specify which fields they want from the available operations. This is how you avoid over-fetching!
To get all user names and IDs:
query GetUsers {
users {
id
name
}
}Root Type: Mutation
The Mutation root type defines all the entry points for writing or changing data in your API. These are like 'POST', 'PUT', 'PATCH', and 'DELETE' operations in REST.
Mutations often take input arguments and return the modified object.
type Mutation {
createUser(name: String!, email: String, age: Int): User!
updateUser(id: ID!, name: String, email: String, age: Int): User
deleteUser(id: ID!): Boolean!
}Executing a GraphQL Mutation
Similar to queries, clients send mutations to perform data modifications. They specify the mutation name, its arguments, and what fields of the result they want back.
Here's an example to create a new user:
mutation CreateNewUser {
createUser(name: "Alice", email: "alice@example.com", age: 30) {
id
name
email
}
}Schema Design Quick Check
Consider the following GraphQL schema snippet. Which statements about it are TRUE?
type Book {
id: ID!
title: String!
author: Author!
}
type Author {
id: ID!
name: String!
books: [Book!]
}
type Query {
books: [Book!]!
book(id: ID!): Book
authors: [Author!]!
}
type Mutation {
createBook(title: String!, authorId: ID!): Book!
}Recap & Beyond
Great job! You've learned the core principles of GraphQL API design:
- GraphQL allows clients to request specific data.
- The Schema Definition Language (SDL) defines the API's contract.
- Object types define data structures.
- The
Queryroot type handles data fetching. - The
Mutationroot type handles data modification.
Next, we'll dive into building a GraphQL server with Apollo to bring these designs to life!
คำถามที่พบบ่อย
บทเรียน “หลักการออกแบบ GraphQL API” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “หลักการออกแบบ GraphQL API” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Node.js Backend Development Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Node.js Backend Development Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “หลักการออกแบบ GraphQL API”
เรียนรู้พื้นฐานของ GraphQL ซึ่งรวมถึงสคีมา คำค้น การกลายพันธุ์ และการสมัครรับข้อมูล เพื่อการออกแบบ API ที่ยืดหยุ่น คุณปฏิบัติ Node.js Backend Development Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Node.js Backend Development Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Node.js Backend Development Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “หลักการออกแบบ GraphQL API” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Node.js Backend Development Bootcamp นี้ได้ไหม
ได้ บทเรียน Node.js Backend Development Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- บทนำสู่เซิร์ฟเวอร์เลสด้วย Node.js
- หลักการออกแบบ GraphQL API
- การสร้างเซิร์ฟเวอร์ GraphQL ด้วย Apollo
- การสมัครรับข้อมูล GraphQL แบบเรียลไทม์