BloomRPC เคยตอบคำถามที่นักพัฒนา gRPC ถามกันบ่อยที่สุด: “Postman สำหรับ gRPC อยู่ที่ไหน?” เพียงโหลดไฟล์ .proto แก้ไข request แบบ JSON แล้วกดส่ง เครื่องมือนี้ฟรี ใช้งานง่าย และเคยมีดาวบน GitHub ราว 9,000 ดวง แต่เมื่อวันที่ 4 มกราคม 2023 repository ของ BloomRPC ถูกเก็บถาวร โดย README ระบุชัดเจนว่าโปรเจกต์หยุดพัฒนาแล้ว มีปัญหาค้างอยู่ และไม่แนะนำให้ใช้งานต่อ
สำหรับทีมส่วนใหญ่ Apidog เป็นทางเลือกแทน BloomRPC ที่ใช้งานได้จริงกว่า เพราะไม่ได้รองรับแค่การโหลด .proto และส่ง gRPC call แต่ยังรองรับ gRPC ทั้ง 4 รูปแบบ ได้แก่ unary, server streaming, client streaming และ bidirectional streaming รวมถึงการนำเข้า proto จากไฟล์ในเครื่อง, URL และ server reflection นอกจากนี้ยังเก็บงาน gRPC ไว้ร่วมกับ REST, WebSocket และ GraphQL ในโปรเจกต์เดียว พร้อมการทดสอบ เอกสาร และการแชร์การตั้งค่าในทีม
BloomRPC คืออะไร และทำไมจึงไม่ควรใช้ต่อ
BloomRPC เปิดตัวในปี 2018 ในฐานะแอปเดสก์ท็อป Electron สำหรับสร้าง gRPC request โดยไม่ต้องเขียน client code ขั้นตอนใช้งานตรงไปตรงมา:
- นำเข้าไฟล์
.proto - เลือก service และ RPC method
- แก้ไข request message ในรูปแบบ JSON
- เพิ่ม metadata หากจำเป็น
- ส่ง request และดู response
สำหรับ unary call และ streaming บางกรณี BloomRPC ใช้งานได้ดี จึงเคยเป็น GUI มาตรฐานสำหรับงาน gRPC
ปัญหาคือ repository ถูก archive แล้ว ซึ่งหมายความว่า:
- ไม่มีการแก้ไขบั๊ก
- ไม่มีการอัปเดต dependency
- ไม่มี security update สำหรับ Electron, Chromium หรือ Node ที่ฝังมากับแอป
- ปัญหาเกี่ยวกับ proto import และ streaming ที่ค้างอยู่จะไม่ถูกแก้ไข
- ฟีเจอร์ใหม่ของ gRPC หรือ Proto syntax อาจไม่รองรับ
หากกำลังเริ่มโปรเจกต์ใหม่ ควรหยุดติดตั้ง BloomRPC และย้ายไปใช้เครื่องมือที่ยังดูแลต่อเนื่องแทน
ทีมส่วนใหญ่ไม่ได้มีแค่ gRPC อย่างเดียว แต่ยังใช้ REST, WebSocket หรือ GraphQL ด้วย การแยกเครื่องมือสำหรับแต่ละ protocol ทำให้ต้องทำงานซ้ำ ทั้งการเก็บ request, metadata, auth และเอกสาร หากกำลังเลือกเครื่องมือใหม่ ให้เริ่มจากสิ่งที่ทำให้ gRPC client ที่ดี มากกว่าแค่ “โหลด proto และกดส่ง”
ทางเลือกหลัก: Apidog
Apidog เป็นแพลตฟอร์มพัฒนา API ที่รองรับการออกแบบ ดีบัก ทดสอบ mock และจัดทำเอกสาร API โดยรองรับ gRPC ตามที่ระบุในเอกสารทางการ
สิ่งที่ Apidog รองรับสำหรับ gRPC
-
รองรับ gRPC ครบทั้ง 4 รูปแบบ
- Unary
- Server streaming
- Client streaming
- Bidirectional streaming
สำหรับ streaming call ให้เปิด session แล้วส่งข้อความจากแท็บ Message ขณะดูข้อความที่ส่งและรับตามลำดับใน timeline
-
นำเข้า API definition ได้ 3 วิธี
- เลือกไฟล์
.protoจากเครื่อง - นำเข้า proto จาก URL
- ใช้ server reflection จาก gRPC server ที่กำลังรันอยู่
- เลือกไฟล์
หาก proto ของคุณ import ไฟล์อื่น ให้เพิ่ม dependency directory เพื่อให้ระบบ resolve import ได้ถูกต้อง
- แก้ไข request เป็น JSON
เช่นเดียวกับ BloomRPC คุณสามารถกรอก protobuf message ในรูปแบบ JSON ได้โดยตรง ตัวอย่าง:
{
"userId": "u_123",
"includeProfile": true
}
หากต้องการทำความเข้าใจการแปลงข้อมูลระหว่าง protobuf และ JSON เพิ่มเติม ดูคู่มือ protobuf เป็น JSON
- รองรับ TLS, metadata และ authentication
เลือก protocol ต่อ request ได้ เช่น:
grpc://localhost:50051
หรือ:
grpcs://api.example.com:443
จากนั้นเพิ่ม metadata เช่น:
authorization: Bearer <token>
x-request-id: debug-001
สำหรับ token, TLS และ mTLS ดู แนวทางการยืนยันตัวตน gRPC
- บันทึกและแชร์ request ในทีม
การตั้งค่า server URL, request body, metadata และ auth สามารถบันทึกไว้ในโปรเจกต์เดียวกันได้ จึงไม่ต้องให้เพื่อนร่วมทีมนำเข้า proto และพิมพ์ค่าเดิมซ้ำทุกครั้ง
ใช้งาน Apidog แทน BloomRPC แบบทีละขั้นตอน
1. สร้างโปรเจกต์และนำเข้า proto
เริ่มจากสร้างโปรเจกต์ใน Apidog แล้วเลือกนำเข้า .proto ของบริการ
หาก proto มี dependency เช่น:
import "google/protobuf/timestamp.proto";
import "common/user.proto";
ให้เพิ่ม directory ที่เก็บไฟล์ dependency ด้วย เพื่อให้ import สำเร็จ
หากไม่มีไฟล์ proto อยู่ในเครื่อง แต่ server เปิด reflection ไว้ ให้เชื่อมต่อกับ server โดยตรงแทน
2. เลือก service และ RPC method
หลังนำเข้า proto สำเร็จ ให้เลือก service และ method ที่ต้องการเรียก ตัวอย่าง:
service UserService {
rpc GetUser(GetUserRequest) returns (GetUserResponse);
}
เลือก UserService แล้วเลือก GetUser
3. กรอก request JSON
Apidog จะสร้างโครง JSON ตาม schema ของ request ให้ แก้ไขค่าที่จำเป็น เช่น:
{
"id": "user_123"
}
4. ตั้งค่า endpoint และ TLS
กำหนด endpoint ของ gRPC server:
grpc://localhost:50051
สำหรับ production ที่ใช้ TLS:
grpcs://grpc.example.com:443
5. เพิ่ม metadata และ authentication
หากบริการต้องใช้ bearer token ให้เพิ่ม metadata:
authorization: Bearer eyJhbGciOi...
บันทึก request นี้ไว้เพื่อใช้ซ้ำในการดีบักครั้งถัดไป
6. ส่ง request และตรวจสอบผลลัพธ์
สำหรับ unary call จะได้ response เดียวพร้อม gRPC status code
gRPC status code ไม่เหมือน HTTP status code ตัวอย่างที่ควรรู้:
OKINVALID_ARGUMENTUNAUTHENTICATEDPERMISSION_DENIEDNOT_FOUNDUNAVAILABLE
ดูรายละเอียดเพิ่มเติมได้จากข้อมูลอ้างอิงรหัสสถานะ gRPC
จุดที่ต่างชัดเจน: Streaming
BloomRPC มีข้อจำกัดและปัญหาค้างอยู่กับ client streaming และ bidirectional streaming ขณะที่ Apidog ออกแบบ streaming call ให้เป็น live session
แนวทางใช้งานมีดังนี้:
- เปิด streaming RPC
- ส่งข้อความแรกจากแท็บ Message
- ดูข้อความตอบกลับใน timeline
- ส่งข้อความเพิ่มเติมได้ตามต้องการ
- ปิด session เมื่อจบการทดสอบ
รูปแบบนี้เหมาะกับบริการ เช่น chat, event stream, telemetry หรือ real-time notification
หากต้องการทบทวนว่าแต่ละรูปแบบของ streaming เหมาะกับกรณีใด อ่าน gRPC streaming อธิบาย
Server reflection: ดีบักโดยไม่ต้องหาไฟล์ proto
BloomRPC ต้องใช้ไฟล์ .proto แต่ Apidog รองรับ server reflection
หาก gRPC server เปิด reflection ไว้ คุณสามารถ:
- ระบุ server endpoint
- เชื่อมต่อผ่าน reflection
- ดู service และ method ที่ server เปิดเผย
- สร้าง request และทดสอบได้ทันที
วิธีนี้เหมาะกับการตรวจสอบ staging environment หรือการดีบัก service ของทีมอื่น โดยไม่ต้องตามหา proto revision ที่ตรงกับ server
มากกว่าแค่ gRPC client
ข้อได้เปรียบสำคัญของ Apidog คือการเก็บงาน API หลายประเภทในที่เดียว
ในโปรเจกต์เดียวกัน คุณสามารถจัดการ:
- gRPC requests
- REST endpoints
- WebSocket และ SSE
- GraphQL operations
- automated tests
- HTTP mocks
- เอกสาร API ที่เผยแพร่ได้
ตัวอย่างเช่น backend เดียวอาจมีทั้ง gRPC สำหรับ internal service-to-service communication และ REST สำหรับ public API แทนที่จะใช้ BloomRPC สำหรับ gRPC และอีกเครื่องมือหนึ่งสำหรับ REST คุณสามารถเก็บ workflow ทั้งหมดไว้ในโปรเจกต์เดียว
ดูตัวอย่างการทำการทดสอบ gRPC API และเปรียบเทียบ protocol เพิ่มเติมได้ที่ REST vs GraphQL vs gRPC หรือ gRPC vs REST
BloomRPC vs Apidog: เปรียบเทียบแบบสรุป
| คุณสมบัติ | BloomRPC | Apidog |
|---|---|---|
| สถานะโปรเจกต์ | Archive ตั้งแต่ ม.ค. 2023 และไม่แนะนำให้ใช้งาน | พัฒนาอย่างต่อเนื่อง |
| Unary call | รองรับ | รองรับ |
| Server streaming | รองรับบางส่วน | รองรับ |
| Client streaming | มีข้อจำกัด | รองรับ |
| Bidirectional streaming | มีข้อจำกัด | รองรับ |
| นำเข้า Proto | ไฟล์ .proto ในเครื่อง |
ไฟล์ในเครื่อง, URL, server reflection |
| TLS | พื้นฐาน | เลือก grpc:// หรือ grpcs:// ต่อ request |
| Metadata และ auth | แก้ไข metadata ได้ | metadata พร้อมการตั้งค่า authentication |
| การแชร์ในทีม | ไม่มี เน้นใช้งานในเครื่อง | บันทึกและแชร์ใน workspace |
| Protocol อื่น | gRPC เท่านั้น | REST, WebSocket, SSE, GraphQL และ gRPC |
| Testing, docs, mocks | ไม่มี | อยู่ในแพลตฟอร์มเดียวกัน |
| ราคา | ฟรี แต่ถูกละทิ้ง | มีแผนฟรีสำหรับผู้ใช้สูงสุด 4 คน |
ย้ายจาก BloomRPC ไป Apidog
ไม่มีไฟล์ export สำคัญจาก BloomRPC ที่ต้องย้าย เพราะข้อมูลหลักของคุณควรอยู่ใน repository อยู่แล้ว ได้แก่ไฟล์ proto และข้อมูลเชื่อมต่อ service
ทำตามขั้นตอนนี้:
- รวบรวมไฟล์
.proto
ตรวจสอบว่า proto และ dependency ทั้งหมดอยู่ใน repository หรือ directory ที่เข้าถึงได้
- นำเข้า proto เข้า Apidog
สร้างโปรเจกต์ แล้วนำเข้า proto จากเครื่องหรือ URL หากมี import อื่น ให้เพิ่ม dependency directory
- หรือใช้ server reflection
หาก server เปิด reflection ไว้ คุณสามารถข้ามการนำเข้า proto ได้
- ตั้งค่า endpoint และ TLS
ระบุ server URL และเลือก grpc:// หรือ grpcs://
- สร้าง metadata และ auth ใหม่
เพิ่ม header, token หรือ certificate ที่เคยใช้งานใน BloomRPC
- บันทึก request
บันทึก request ที่ใช้งานบ่อยเพื่อให้ทีมเรียกใช้ซ้ำได้
สำหรับผู้ใช้ BloomRPC เดิม ขั้นตอนตั้งแต่การนำเข้า proto จนถึงส่ง unary request มักใช้เวลาไม่ถึงสิบนาที เพราะ workflow หลักยังเหมือนเดิม
ทางเลือกอื่นแทน BloomRPC
Apidog เหมาะเมื่อ gRPC เป็นส่วนหนึ่งของ workflow API ที่ใหญ่กว่า แต่หากความต้องการเฉพาะทาง เครื่องมือเหล่านี้ก็น่าสนใจ
-
grpcurl: เหมือน
curlสำหรับ gRPC เหมาะกับ shell script, CI และการตรวจสอบ service อย่างรวดเร็ว โดยเฉพาะ server ที่เปิด reflection
grpcurl -plaintext \
-d '{"id":"user_123"}' \
localhost:50051 \
user.v1.UserService/GetUser
ดูรายละเอียดเพิ่มเติมในทางเลือกที่ดีที่สุดสำหรับ grpcurl
grpcui: UI บนเว็บชั่วคราวสำหรับ gRPC server เดียว เหมาะกับการทดสอบสั้น ๆ และไม่เน้นการบันทึก state
Kreya: desktop client สำหรับ gRPC และ REST เหมาะกับผู้ที่ต้องการเครื่องมือแบบ standalone ที่ใกล้เคียง BloomRPC มากที่สุด ดูเพิ่มเติมที่ Kreya คืออะไร และ ทางเลือกที่ดีที่สุดสำหรับ Kreya
Postman: รองรับ gRPC ตั้งแต่ปี 2022 เหมาะกับทีมที่ใช้ Postman อยู่แล้ว แต่ยังต้องพิจารณาราคาและข้อจำกัดของ workspace ดู ทางเลือกที่ดีที่สุดสำหรับ Postman
evans: gRPC REPL สำหรับเทอร์มินัล เหมาะกับผู้ที่ทำงานผ่าน tmux หรือ CLI เป็นหลัก แต่ไม่ใช่ตัวแทน GUI ของ BloomRPC โดยตรง
สรุปการเลือกเครื่องมือ:
- ใช้ CLI และ automation:
grpcurl - ต้องการ GUI แบบชั่วคราวสำหรับ server เดียว:
grpcui - ต้องการ standalone desktop gRPC client: Kreya
- ต้องการจัดการ gRPC, REST, testing และ docs ในที่เดียว: Apidog
คำถามที่พบบ่อย
BloomRPC ยังได้รับการดูแลอยู่หรือไม่?
ไม่ Repository ถูก archive เมื่อวันที่ 4 มกราคม 2023 และ README ระบุว่าไม่แนะนำให้ใช้งานต่อ ไม่มีการอัปเดต ฟิกซ์บั๊ก หรือ security release ใหม่ สำหรับการเลือก gRPC client ในโปรเจกต์ใหม่ ควรตัด BloomRPC ออกจากตัวเลือก
นำเข้าการตั้งค่า BloomRPC ไป Apidog ได้หรือไม่?
ไม่มีไฟล์ import โดยตรง เพราะ BloomRPC ไม่ได้เก็บ state ที่พกพาได้อย่างมีนัยสำคัญ ให้ย้ายโดยนำเข้าไฟล์ .proto อีกครั้ง หรือใช้ server reflection แล้วสร้าง server URL, TLS และ metadata ใหม่
Apidog รองรับ gRPC streaming หรือไม่?
รองรับครบทั้ง unary, server streaming, client streaming และ bidirectional streaming โดย streaming request ทำงานแบบ live session ที่ส่งข้อความเพิ่มและดู timeline ของข้อความได้ ดูรายละเอียดที่ gRPC streaming
ถ้าต้องการเรียก gRPC จาก command line อย่างรวดเร็วล่ะ?
ใช้ grpcurl โดยเฉพาะเมื่อทำงานใน shell script หรือ CI และเมื่อ server เปิด reflection ไว้ หากต้องการดูว่าเมื่อใดควรใช้ GUI แทน CLI อ่านคู่มือทางเลือก grpcurl
ทดสอบทั้ง gRPC และ REST ในเครื่องมือเดียวได้หรือไม่?
ได้ ใน Apidog คุณสามารถเก็บ gRPC, REST, WebSocket, SSE และ GraphQL ไว้ในโปรเจกต์เดียวกัน พร้อม test, mock และเอกสาร ดู workflow เพิ่มเติมในคู่มือการทดสอบ gRPC API
เลิกใช้ไคลเอนต์ที่ถูกเก็บถาวร
BloomRPC ทำหน้าที่ของมันได้ดีในยุคหนึ่ง แต่วันนี้เป็นเครื่องมือที่หยุดพัฒนาแล้ว หากคุณยังใช้อยู่ ให้เริ่มจากนำไฟล์ .proto เข้า Apidog หรือเชื่อมต่อผ่าน server reflection จากนั้นสร้าง unary และ streaming request ที่ต้องใช้จริง บันทึก metadata, auth และ endpoint ไว้ให้ทีมใช้ร่วมกัน
ดาวน์โหลด Apidog ได้ฟรี โดยแผนฟรีรองรับผู้ใช้สูงสุด 4 คน และไฟล์ proto ของคุณคือสิ่งหลักที่ต้องใช้ในการย้ายออกจาก BloomRPC
Top comments (0)