GraphQL และ gRPC
สำรวจรูปแบบ API ทางเลือก เช่น GraphQL สำหรับดึงข้อมูลได้อย่างยืดหยุ่น และ gRPC สำหรับการสื่อสารประสิทธิภาพสูง
GraphQL และ gRPC เป็นบทเรียน System Design Basics for Backend Developers ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน System Design Basics for Backend Developers และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส System Design Basics for Backend Developers มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
Beyond REST: GraphQL & gRPC
RESTful APIs are widely used, but they aren't always the perfect fit for every scenario.
Sometimes, you need more control over data fetching or require extremely high performance for inter-service communication.
This lesson explores two powerful alternatives: GraphQL and gRPC.
REST's Data Fetching Hurdles
Traditional REST APIs often lead to two common issues:
- Over-fetching: Receiving more data than needed in a single request, wasting bandwidth.
- Under-fetching: Needing to make multiple requests to different endpoints to gather all required data.
This can be inefficient, especially for mobile clients or complex UIs.
GraphQL: Query Exactly What You Need
GraphQL is a query language for your API, and a server-side runtime for executing those queries.
It empowers clients to request precisely the data they need, eliminating over-fetching and under-fetching.
Think of it as filling out a form for your data request, rather than accepting a pre-defined bundle.
Defining Data with GraphQL Schema
Every GraphQL API is built around a schema. This schema defines all the types of data and operations (queries, mutations) available.
It acts as a contract between the client and the server, ensuring clients know exactly what they can ask for.
Here's a simple example:
type User {
id: ID!
name: String!
email: String
posts: [Post]
}
type Post {
id: ID!
title: String!
content: String
author: User!
}Fetching Data with GraphQL Queries
Clients use GraphQL queries to fetch data. They specify the exact fields they want from the available types defined in the schema.
This means a single query can replace multiple REST requests.
See how we only ask for name, email, and post titles:
query GetUserAndPosts {
user(id: "123") {
name
email
posts {
title
}
}
}Changing Data with GraphQL Mutations
Just as queries fetch data, mutations are used to modify data on the server. This includes creating, updating, or deleting records.
Mutations also return data, often the newly created or updated object, confirming the change.
Here's an example to create a new post:
mutation CreatePost($title: String!, $authorId: ID!) {
createPost(title: $title, authorId: $authorId) {
id
title
}
}gRPC: High-Performance RPC
gRPC (Google Remote Procedure Call) is an open-source framework for high-performance communication between services.
Unlike GraphQL, gRPC is more commonly used for internal microservice communication where speed, efficiency, and strict contracts are paramount.
It's built on HTTP/2 for transport and Protocol Buffers for message serialization.
Protocol Buffers: gRPC's IDL
gRPC uses Protocol Buffers (Protobuf) as its Interface Definition Language (IDL) and its underlying message interchange format.
Protobuf defines the structure of your data and the service interfaces in a language-agnostic way.
This definition is then used to generate client and server code in various languages.
syntax = "proto3";
package greeter;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}gRPC: Binary, HTTP/2, Streaming
Key features of gRPC for high performance:
- HTTP/2: Enables multiplexing (multiple requests over one connection) and bidirectional streaming.
- Binary Serialization: Protobuf serializes data into a compact binary format, which is faster and smaller than JSON.
- Code Generation: Automatically generates client and server stub code from
.protodefinitions, simplifying development.
Choosing Between GraphQL & gRPC
When to use which?
- GraphQL: Ideal for flexible, client-facing APIs where clients need to define their data requirements. Excellent for mobile apps and complex UIs.
- gRPC: Best for high-performance, low-latency inter-service communication (e.g., microservices), or when strict contracts and efficient data transfer are critical.
They solve different problems and can even be used together in a larger system!
Quick Check: API Styles
Consider a scenario where you are building a new mobile application with a complex UI that needs to fetch varied data from a backend with minimal network requests. Which API style would be most suitable for the client-server communication?
Recap: Flexible & Fast APIs
In this lesson, we explored two powerful API alternatives: GraphQL and gRPC.
- GraphQL provides a flexible query language, allowing clients to fetch precisely the data they need, tackling over- and under-fetching issues.
- gRPC offers a high-performance, binary communication framework, ideal for efficient inter-service communication using HTTP/2 and Protocol Buffers.
Understanding their strengths helps you choose the right tool for different system design challenges.
คำถามที่พบบ่อย
บทเรียน “GraphQL และ gRPC” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “GraphQL และ gRPC” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส System Design Basics for Backend Developers ให้อัปเกรดเป็น CoddyKit PRO คอร์ส System Design Basics for Backend Developers มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “GraphQL และ gRPC”
สำรวจรูปแบบ API ทางเลือก เช่น GraphQL สำหรับดึงข้อมูลได้อย่างยืดหยุ่น และ gRPC สำหรับการสื่อสารประสิทธิภาพสูง คุณปฏิบัติ System Design Basics for Backend Developers ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน System Design Basics for Backend Developers หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน System Design Basics for Backend Developers บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “GraphQL และ gRPC” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน System Design Basics for Backend Developers นี้ได้ไหม
ได้ บทเรียน System Design Basics for Backend Developers ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- หลักการออกแบบ RESTful API
- GraphQL และ gRPC
- คิวข้อความและสถาปัตยกรรมขับเคลื่อนด้วยเหตุการณ์
- การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง