gRPC & High Performance APIs · บทเรียน

การสะท้อนข้อมูลของเซิร์ฟเวอร์และไคลเอนต์แบบไดนามิก

เปิดใช้การสะท้อนข้อมูลของเซิร์ฟเวอร์ gRPC เพื่อให้เครื่องมือและไคลเอนต์ค้นหาบริการและโครงสร้างข้อความได้ขณะทำงาน โดยไม่ต้องมีโค้ดตัวแทนที่คอมไพล์ไว้ล่วงหน้า

บทเรียน 4 จาก 413 ขั้นตอน

การสะท้อนข้อมูลของเซิร์ฟเวอร์และไคลเอนต์แบบไดนามิก เป็นบทเรียน gRPC & High Performance APIs ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน gRPC & High Performance APIs และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส gRPC & High Performance APIs มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

The Stub Discovery Problem

Normally a client needs the .proto files compiled into stubs to call a service. That is inconvenient for debugging tools and generic clients.

Server reflection lets a server describe its own API at runtime.

What Reflection Exposes

The reflection service answers questions like:

  • Which services does this server host?
  • What methods does a service have?
  • What are the request/response message schemas?

It returns the underlying FileDescriptorProto data.

Enabling Reflection in Go

Register the reflection service on your gRPC server with a single call.

import 'google.golang.org/grpc/reflection'

s := grpc.NewServer()
pb.RegisterServiceServer(s, &svc{})
reflection.Register(s)

Enabling Reflection in Java

In Java add the ProtoReflectionService when building the server.

Server server = ServerBuilder.forPort(9090)
  .addService(new MyServiceImpl())
  .addService(ProtoReflectionService.newInstance())
  .build();

Listing Services with grpcurl

With reflection on, grpcurl can list services without a proto file.

grpcurl -plaintext localhost:9090 list

Describing a Method

You can inspect a method's input and output schema directly from the server.

grpcurl -plaintext localhost:9090 describe my.pkg.Service.GetUser

Calling Without Stubs

Reflection lets you invoke methods by sending JSON; the tool maps it to protobuf using the discovered schema.

grpcurl -plaintext -d '{"id": 7}' localhost:9090 my.pkg.Service.GetUser

Dynamic Clients in Code

Libraries can build messages dynamically from descriptors fetched via reflection, enabling generic gateways and admin tools that work against any gRPC server.

The Reflection Protocol

Reflection is itself a gRPC service: grpc.reflection.v1.ServerReflection. It uses a bidirectional stream where clients ask and the server streams back descriptors.

Security Considerations

Reflection reveals your entire API surface. In production:

  • Disable it on public-facing edges, or
  • Restrict it to internal networks / authenticated callers

It is invaluable in dev and staging.

When to Use It

Reflection shines for debugging, building generic UIs (like BloomRPC/Postman), and admin tooling. For high-throughput app clients, precompiled stubs are still faster and safer.

Quick Check

Test your reflection knowledge.

Recap

You learned server reflection and dynamic clients:

  • Reflection lets a server describe its own API at runtime
  • Enable it with reflection.Register (Go) or ProtoReflectionService (Java)
  • Tools like grpcurl can list, describe, and call without stubs
  • Dynamic clients build messages from fetched descriptors
  • Restrict reflection in production for security
เริ่มต้นได้ฟรี

เรียนรู้ gRPC & High Performance APIs ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
48

คำถามที่พบบ่อย

บทเรียน “การสะท้อนข้อมูลของเซิร์ฟเวอร์และไคลเอนต์แบบไดนามิก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสะท้อนข้อมูลของเซิร์ฟเวอร์และไคลเอนต์แบบไดนามิก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส gRPC & High Performance APIs ให้อัปเกรดเป็น CoddyKit PRO คอร์ส gRPC & High Performance APIs มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสะท้อนข้อมูลของเซิร์ฟเวอร์และไคลเอนต์แบบไดนามิก”

เปิดใช้การสะท้อนข้อมูลของเซิร์ฟเวอร์ gRPC เพื่อให้เครื่องมือและไคลเอนต์ค้นหาบริการและโครงสร้างข้อความได้ขณะทำงาน โดยไม่ต้องมีโค้ดตัวแทนที่คอมไพล์ไว้ล่วงหน้า คุณปฏิบัติ gRPC & High Performance APIs ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน gRPC & High Performance APIs หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน gRPC & High Performance APIs บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การสะท้อนข้อมูลของเซิร์ฟเวอร์และไคลเอนต์แบบไดนามิก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน gRPC & High Performance APIs นี้ได้ไหม

ได้ บทเรียน gRPC & High Performance APIs ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การผสานรวม gRPC-Web
  2. gRPCurl และ BloomRPC
  3. รูปแบบการค้นพบบริการ
  4. การสะท้อนข้อมูลของเซิร์ฟเวอร์และไคลเอนต์แบบไดนามิก
← กลับไปที่ gRPC & High Performance APIs