grpcurl เป็นเครื่องมือบรรทัดคำสั่ง (command-line tool) ที่นิยมใช้สำหรับการทดสอบบริการ gRPC แต่คำสั่งเทอร์มินัลที่ต้องใช้แฟล็กจำนวนมากอาจไม่ใช่หนทางที่เร็วที่สุดเสมอไปในการสำรวจ API, เล่นซ้ำการเรียกแบบสตรีมมิ่ง หรือแชร์คำขอให้กับเพื่อนร่วมทีม หากคุณต้องการ ไคลเอนต์ gRPC แบบภาพ (visual) หรือเครื่องมือที่ทำอะไรได้มากกว่าแค่การเรียกใช้เมธอดทีละครั้ง คู่มือนี้จะแนะนำทางเลือกอื่นของ grpcurl จำนวนหกตัวเลือก ทั้งแบบ GUI และ CLI พร้อมข้อสังเกตที่ตรงไปตรงมาว่าแต่ละตัวเลือกเหมาะสมกับสถานการณ์ใด
ดาวน์โหลดแอป
grpcurl คืออะไร และมีข้อจำกัดอย่างไร
grpcurl เปรียบเสมือน curl สำหรับ gRPC คุณเพียงแค่ชี้ไปยังเซิร์ฟเวอร์ ระบุชื่อบริการและเมธอด ส่ง JSON request body เข้าไป แล้วมันก็จะส่งผลลัพธ์กลับมา มันรองรับ server reflection ซึ่งช่วยให้สามารถแสดงรายการบริการและเมธอดได้โดยที่คุณไม่จำเป็นต้องให้ไฟล์ .proto แก่มัน และยังทำงานได้กับ TLS, metadata headers และ .proto หรือ protoset descriptors เมื่อปิดการสะท้อน (reflection)
สิ่งเหล่านี้ครอบคลุมการใช้งานได้มากทีเดียว สำหรับการตรวจสอบสถานะอย่างรวดเร็วหรือการเรียกใช้สคริปต์ใน CI นั้น grpcurl เป็นเครื่องมือที่ยอดเยี่ยมมาก แต่ก็มีบางจุดที่เริ่มใช้งานลำบาก:
- เป็น CLI-only เท่านั้น ทุกการเรียกใช้เป็นคำสั่ง และการสำรวจ API ที่ไม่คุ้นเคยหมายถึงการอ่านรายการเมธอดในเทอร์มินัลและการพิมพ์ JSON ด้วยมือ
- การสตรีมมิ่งเป็นเรื่องยุ่งยาก grpcurl สามารถทำ client, server และ bidirectional streaming ได้ แต่คุณต้องป้อนข้อความเป็นสตรีม JSON ผ่าน stdin ไม่มีวิธีที่เห็นได้ด้วยตาเพื่อดูสตรีมจากเซิร์ฟเวอร์ที่ส่งข้อความมาทีละข้อความ
- ไม่มีการบันทึกคำขอ ไม่มีคอลเล็กชัน ประวัติ หรือการสลับสภาพแวดล้อมในตัว คุณต้องจัดการเองด้วยสคริปต์เชลล์หรือไฟล์บันทึก
- การแชร์หมายถึงการแชร์สตริงคำสั่ง ไม่มีพื้นที่ทำงานร่วมกัน (shared workspace) ไม่มีตัวอย่างที่บันทึกไว้ให้เพื่อนร่วมทีมเปิดและรันได้
ไม่มีข้อจำกัดใดที่ทำให้ grpcurl ไม่ดี แต่มันเป็นเครื่องมือที่มีขอบเขตการใช้งานที่จำกัด หากงานของคุณขยายไปไกลกว่าแค่การเรียกใช้สคริปต์เพียงครั้งเดียว ตัวเลือกใดตัวเลือกหนึ่งด้านล่างจะเหมาะสมกว่า
ทางเลือกอื่นของ grpcurl โดยสรุป
| เครื่องมือ | ส่วนต่อประสาน | การรองรับสตรีมมิ่ง | Reflection | เหมาะที่สุดสำหรับ |
|---|---|---|---|---|
| Apidog | GUI (เดสก์ท็อป) | Unary + เซิร์ฟเวอร์, ไคลเอนต์, สองทิศทาง | ใช่ | การทดสอบ gRPC แบบภาพ ควบคู่ไปกับ REST, GraphQL และเอกสารประกอบ |
| grpcui | Web UI | Unary + สตรีมมิ่ง | ใช่ | ส่วนหน้าแบบเบราว์เซอร์สำหรับ grpcurl จากผู้พัฒนาเดียวกัน |
| Postman | GUI (เดสก์ท็อป/เว็บ) | Unary + สตรีมมิ่ง | ใช่ | ทีมที่ใช้งาน Postman เป็นมาตรฐานอยู่แล้ว |
| Kreya | GUI (เดสก์ท็อป) | Unary + สตรีมมิ่ง | ใช่ | ไคลเอนต์เดสก์ท็อปที่เน้น gRPC และ REST |
| Evans | CLI แบบโต้ตอบ | Unary + สตรีมมิ่ง | ใช่ | เวิร์กโฟลว์เทอร์มินัลสไตล์ REPL |
| BloomRPC | GUI (เดสก์ท็อป) | Unary + สตรีมมิ่ง | จำกัด | เฉพาะโปรเจกต์เดิม (ไม่ได้รับการดูแล) |
1. Apidog (ไคลเอนต์ gRPC แบบภาพ)
Apidog เป็นแพลตฟอร์ม API ที่รองรับ REST, GraphQL, WebSocket, SOAP และ gRPC ในแอปเดสก์ท็อปเดียว ทำให้ gRPC อยู่รวมกับงาน API อื่นๆ ของคุณแทนที่จะแยกไปอยู่ในเทอร์มินัลต่างหาก สำหรับ gRPC โดยเฉพาะ คุณสามารถนำเข้าไฟล์ .proto หรือเชื่อมต่อผ่าน server reflection และ Apidog จะอ่านคำจำกัดความของบริการและเมธอดให้คุณ
จากนั้น คุณจะได้เครื่องมือสร้างคำขอที่ขับเคลื่อนด้วยฟอร์ม เมธอดจะปรากฏในรายการที่คุณสามารถคลิกได้ ข้อความคำขอจะแสดงเป็นช่องที่แก้ไขได้ตามโครงสร้าง proto และการตอบกลับจะกลับมาในรูปแบบที่จัดระเบียบ การเรียก gRPC ทั้งสี่ประเภททำงานได้: unary, server streaming, client streaming และ bidirectional streaming สำหรับ server streaming คุณสามารถดูข้อความที่เข้ามาในแผงการตอบกลับได้ตามเวลาที่มาถึง ซึ่งเป็นส่วนที่ grpcurl ทำให้คุณต้องเพ่งมองใน stdout
ขอบเขตการใช้งานที่ตรงไปตรงมา: Apidog เป็นไคลเอนต์ gRPC แบบ GUI ไม่ใช่ตัวแทน CLI แบบหนึ่งต่อหนึ่งสำหรับ grpcurl หากความต้องการที่แท้จริงของคุณคือไบนารีที่สามารถสคริปต์ได้ที่คุณจะใช้ใน shell pipeline, grpcurl หรือ Evans จะใกล้เคียงกับความต้องการนั้นมากกว่า จุดที่ Apidog เหนือกว่าคือการสำรวจ การบันทึกคำขอ ตัวแปรสภาพแวดล้อมสำหรับปลายทาง (endpoints) และ metadata และการเก็บ gRPC ไว้ในพื้นที่ทำงานเดียวกันกับโปรโตคอลอื่นๆ ของคุณ หากคุณสร้างบริการที่ใช้โปรโตคอลหลายตัว เวิร์กโฟลว์ API แบบหลายโปรโตคอล จะราบรื่นขึ้นเมื่อมีเครื่องมือเดียวที่ครอบคลุมทั้งหมด
ดาวน์โหลด Apidog เพื่อนำเข้าไฟล์ .proto และรันการเรียกแบบสตรีมมิ่งครั้งแรกของคุณใน GUI
2. grpcui
grpcui มาจากผู้พัฒนาคนเดียวกับ grpcurl คือ fullstorydev และเป็นก้าวต่อไปที่เป็นธรรมชาติหากคุณชอบ grpcurl แต่ต้องการอินเทอร์เฟซแบบภาพ มันจะเปิดเซิร์ฟเวอร์เว็บในเครื่องที่ให้ฟอร์มในเบราว์เซอร์สำหรับเรียกใช้เมธอด gRPC คุณจะได้เมนูดรอปดาวน์สำหรับบริการและเมธอด ช่องฟอร์มที่สร้างขึ้นสำหรับข้อความคำขอ และอินพุต metadata ซึ่งทั้งหมดนี้รองรับโดย server reflection หรือ proto descriptors
มันรองรับการสตรีมมิ่งและสะท้อนชุดคุณสมบัติ gRPC เดียวกันกับที่คุณคาดหวังจากตระกูล grpcurl ข้อแลกเปลี่ยนคือ grpcui มีวัตถุประสงค์เดียว มันเป็นแค่ตัวสำรวจ gRPC และไม่มีอะไรอื่น ดังนั้นจึงไม่มีการทดสอบ REST ไม่มีคอลเล็กชันที่บันทึกไว้ข้ามเซสชัน และไม่มีพื้นที่ทำงานสำหรับทีม หากคุณต้องการ UI แบบเบราว์เซอร์อย่างรวดเร็วบนเซิร์ฟเวอร์เดียว มันเป็นตัวเลือกที่ลงตัว grpcui repo มีรายละเอียดการติดตั้ง
3. Postman
Postman ได้เพิ่มการรองรับ gRPC เข้ามา และหากทีมของคุณใช้งาน Postman อยู่แล้ว ก็คุ้มค่าที่จะใช้ก่อนที่จะเพิ่มเครื่องมืออื่น คุณสามารถสร้างคำขอ gRPC ชี้ไปยังเซิร์ฟเวอร์ โหลดไฟล์ .proto (หรือใช้เซิร์ฟเวอร์ที่รองรับ reflection) และเรียกใช้เมธอดผ่าน UI ของ Postman มันรองรับการเรียกแบบ unary และ streaming ช่วยให้คุณตั้งค่า metadata และการอนุญาต (authorization) และบันทึกคำขอในคอลเล็กชันเช่นเดียวกับงาน Postman อื่นๆ ของคุณ

จุดแข็งนั้นชัดเจน: คอลเล็กชัน, สภาพแวดล้อม และพื้นที่ทำงานที่ทีมของคุณคุ้นเคยอยู่แล้ว ข้อสังเกตคือ gRPC ใน Postman มีประวัติที่ยังไม่สมบูรณ์เท่าประสบการณ์การใช้งาน REST และบัญชี Postman ที่ใช้งานหนักๆ อาจมาพร้อมกับการซิงค์คลาวด์และข้อพิจารณาด้านราคาที่บางทีมอาจต้องการหลีกเลี่ยง หากคุณกำลังพิจารณาเครื่องมือที่ครอบคลุมมากขึ้น ลองดูบทสรุปของเราเกี่ยวกับ ทางเลือกอื่นของ Postman สำหรับการทดสอบ API ใน เอกสาร gRPC ของ Postman ครอบคลุมชุดคุณสมบัติปัจจุบันทั้งหมด
4. Kreya
Kreya เป็นไคลเอนต์เดสก์ท็อปที่เน้น gRPC และ REST มันอ่านไฟล์ .proto และรองรับ server reflection สร้างฟอร์มคำขอจาก schema ของคุณ และจัดการโหมดสตรีมมิ่งทั้งหมด มันเน้นเลย์เอาต์ที่สะอาดตาและเป็นโปรเจกต์ ที่คุณสามารถจัดระเบียบการเรียก ตั้งค่าสภาพแวดล้อม และนำตัวแปรกลับมาใช้ใหม่ได้ ทำให้เป็นตัวเลือกที่แข็งแกร่งหากคุณต้องการ GUI สำหรับ gRPC โดยเฉพาะโดยไม่จำเป็นต้องมีแพลตฟอร์มเต็มรูปแบบ

มีขอบเขตการทำงานที่เบากว่าแพลตฟอร์ม API เต็มรูปแบบ ดังนั้นคุณจะไม่พบ mocking, การสร้างเอกสาร หรือเครื่องมือออกแบบ สำหรับนักพัฒนาส่วนใหญ่ที่ต้องการสำรวจและทดสอบบริการ gRPC ด้วยอินเทอร์เฟซที่เป็นระเบียบ การมุ่งเน้นเช่นนั้นถือเป็นคุณสมบัติ ไม่ใช่ข้อจำกัด
5. Evans
Evans เป็นไคลเอนต์ gRPC แบบโต้ตอบที่ทำงานในเทอร์มินัลของคุณ แต่มีพฤติกรรมคล้าย REPL มากกว่าคำสั่งแบบใช้ครั้งเดียว คุณเริ่มเซสชัน และ Evans จะช่วยให้คุณสามารถเรียกดูแพ็กเกจ บริการ และเมธอด จากนั้นสร้างและส่งคำขอแบบโต้ตอบได้ มันรองรับ server reflection และไฟล์ .proto จัดการการสตรีมมิ่ง และให้คำแนะนำแบบ prompt แทนที่จะบังคับให้คุณจำแฟล็กทุกตัว
หากคุณต้องการความรู้สึกแบบเทอร์มินัลเนทีฟของ grpcurl แต่ไม่ชอบการพิมพ์คำสั่งยาวๆ ซ้ำๆ Evans คือทางสายกลาง มันยังคงเป็นเครื่องมือ CLI ดังนั้นจึงไม่มีมุมมองการสตรีมมิ่งแบบภาพและไม่มีพื้นที่ทำงานร่วมกัน แต่โหมดโต้ตอบช่วยลดความยุ่งยากของ grpcurl ได้มาก Evans GitHub repo มีคำแนะนำในการติดตั้ง
6. BloomRPC (เฉพาะโปรเจกต์เดิม)
BloomRPC เคยเป็น GUI สำหรับ gRPC แบบโอเพ่นซอร์สที่ได้รับความนิยม ซึ่งเป็นแอปเดสก์ท็อปที่มีตัวสำรวจเมธอดและตัวแก้ไขคำขอ ยังคงมีการกล่าวถึงในคู่มือเก่าๆ จึงควรระบุไว้ แต่โปรเจกต์นี้ไม่ได้รับการดูแลอย่างต่อเนื่องอีกต่อไปแล้ว นั่นหมายความว่าคุณสมบัติ gRPC ใหม่ๆ การอัปเดต dependency และการแก้ไขความเข้ากันได้ของระบบปฏิบัติการจะไม่ได้รับการพัฒนา
อย่าเลือก BloomRPC สำหรับโปรเจกต์ใหม่ หากคุณได้รับเวิร์กโฟลว์ที่สร้างขึ้นโดยใช้มัน ให้วางแผนที่จะย้ายไปยังหนึ่งในตัวเลือกที่ยังคงได้รับการดูแลข้างต้น เราแสดงรายการไว้ที่นี่เพียงเพื่อให้คุณทราบว่ามันคืออะไร และทำไมจึงไม่เป็นที่แนะนำในปัจจุบันอีกต่อไป
วิธีการเลือก
เลือกเครื่องมือให้เหมาะสมกับวิธีการทำงานของคุณ:
- คุณต้องการไคลเอนต์ gRPC แบบภาพที่สามารถดูการสตรีมมิ่งและบันทึกรวมถึงแชร์คำขอได้: Apidog
- คุณชอบ grpcurl และต้องการฟอร์มในเบราว์เซอร์เพื่อใช้งาน: grpcui
- ทีมของคุณใช้งาน Postman เป็นมาตรฐานอยู่แล้ว: การรองรับ gRPC ของ Postman
- คุณต้องการไคลเอนต์เดสก์ท็อปที่เน้น gRPC และ REST โดยเฉพาะ: Kreya
- คุณต้องการทำงานในเทอร์มินัล แต่ไม่อยากเหนื่อยกับการพิมพ์แฟล็ก: Evans
- คุณกำลังดูแลระบบเดิม: โปรดทราบว่า BloomRPC ไม่ได้รับการดูแลแล้ว และวางแผนที่จะย้ายไปใช้ตัวเลือกอื่น
หากคุณกำลังทดสอบ gRPC แบบ end-to-end และต้องการคำแนะนำแบบทีละเมธอด คู่มือของเราเกี่ยวกับ วิธีทดสอบ gRPC API อย่างมีประสิทธิภาพ ครอบคลุมเวิร์กโฟลว์อย่างละเอียด และ คู่มือ grpc-curl ต้นฉบับยังคงเป็นจุดเริ่มต้นที่เหมาะสมหากคุณต้องการใช้งานบรรทัดคำสั่ง
คำถามที่พบบ่อย
มี grpcurl เวอร์ชัน GUI หรือไม่?
grpcui จากผู้พัฒนาคนเดียวกัน เป็น GUI ที่ใกล้เคียงที่สุด: มันสร้างฟอร์มในเบราว์เซอร์บนพื้นฐานของ reflection และการจัดการ proto แบบเดียวกับที่ grpcurl ใช้ หากคุณต้องการแอปเดสก์ท็อปเต็มรูปแบบที่มีการบันทึกคำขอ สภาพแวดล้อม และการสตรีมมิ่งที่คุณสามารถดูได้ด้วยภาพ Apidog จะครอบคลุม gRPC ควบคู่ไปกับ REST และ GraphQL ในไคลเอนต์เดียว
ฉันสามารถทดสอบ gRPC streaming โดยไม่ต้องใช้ command line ได้หรือไม่?
ได้ Apidog, Postman, Kreya และ grpcui ทั้งหมดรองรับ gRPC streaming ผ่าน UI รวมถึง server streaming ที่ข้อความจะแสดงผลเมื่อมาถึง grpcurl และ Evans ก็สามารถสตรีมได้เช่นกัน แต่พวกมันจะป้อนและแสดงข้อความเป็นข้อความในเทอร์มินัลแทนที่จะเป็นแผงภาพ
เครื่องมือเหล่านี้จำเป็นต้องมีไฟล์ .proto หรือไม่?
ไม่เสมอไป เครื่องมือทุกตัวที่กล่าวถึงในที่นี้รองรับ gRPC server reflection ดังนั้นหากเซิร์ฟเวอร์ของคุณเปิดเผย reflection ไคลเอนต์จะสามารถค้นพบบริการและเมธอดได้เอง เมื่อปิด reflection คุณต้องระบุไฟล์ .proto หรือ protoset ที่คอมไพล์แล้ว และเครื่องมือส่วนใหญ่เหล่านี้รองรับทั้งสองแบบ สำหรับภาพรวมการทดสอบที่กว้างขึ้น คู่มือการทดสอบ API ขั้นสูงสุด อธิบายว่า gRPC เข้ากันได้กับ REST และโปรโตคอลอื่นๆ อย่างไร
grpcurl ยังคงน่าใช้งานอยู่หรือไม่?
แน่นอน หากเป็นงานที่เหมาะสม grpcurl ยอดเยี่ยมสำหรับการเรียกใช้สคริปต์ การตรวจสอบ CI และการเรียกใช้แบบครั้งเดียวอย่างรวดเร็วจากเทอร์มินัล ทางเลือกอื่นที่กล่าวมานี้มีความสำคัญเมื่อคุณไม่ต้องการใช้คำสั่งเดี่ยวๆ อีกต่อไป และต้องการการสำรวจแบบภาพ คอลเล็กชันที่บันทึกไว้ การสตรีมมิ่งที่สามารถดูได้ หรือพื้นที่ทำงานร่วมกันของทีม
สรุป
grpcurl เป็นเครื่องมือที่ยอดเยี่ยมสำหรับ gRPC บนบรรทัดคำสั่ง และไม่มีเครื่องมือใดในที่นี้ที่จะมาแทนที่มันได้สำหรับการเรียกใช้แบบสคริปต์และแบบเทอร์มินัลโดยตรง สิ่งที่เปลี่ยนไปคืองานที่ทำ เมื่อคุณสำรวจบริการที่ไม่คุ้นเคย ดูสตรีมมิ่ง หรือแชร์คำขอกับทีม ไคลเอนต์แบบภาพจะช่วยประหยัดเวลาได้อย่างแท้จริง ในบรรดาตัวเลือก GUI นั้น Apidog โดดเด่นเพราะมันรวม gRPC, REST, GraphQL, mocking และเอกสารไว้ในที่เดียว ทำให้การทดสอบ gRPC ของคุณไม่แยกต่างหากจากส่วนอื่นๆ
ต้องการทดสอบบริการ gRPC โดยไม่ต้องเขียนแฟล็กแม้แต่ตัวเดียวใช่ไหม? ลองใช้ Apidog ฟรี นำเข้าไฟล์ .proto ของคุณ หรือเชื่อมต่อผ่าน reflection และรันการเรียกแบบ unary และ streaming ใน GUI ได้ภายในไม่กี่นาที
ดาวน์โหลดแอป
