DEV Community

Cover image for Thay thế BloomRPC tốt nhất
Sebastian Petrus
Sebastian Petrus

Posted on Originally published at apidog.com

Thay thế BloomRPC tốt nhất

BloomRPC từng là câu trả lời đơn giản cho câu hỏi “Postman cho gRPC của tôi đâu?”. Bạn tải tệp .proto, chỉnh sửa JSON request rồi gửi. Tuy nhiên, kho lưu trữ BloomRPC đã bị ngừng phát triển từ ngày 4/1/2023 và README khuyến nghị không tiếp tục sử dụng. Nếu đang cần thay thế, Apidog phù hợp cho hầu hết nhóm vì hỗ trợ gRPC cùng REST, WebSocket và GraphQL trong một workspace, bao gồm cả cấu hình gỡ lỗi, kiểm thử và tài liệu.

Dùng thử Apidog ngay hôm nay

BloomRPC là gì và vì sao không nên dùng nữa?

BloomRPC là ứng dụng desktop Electron ra mắt năm 2018 để gọi gRPC mà không cần tự viết client. Quy trình của nó rất trực tiếp:

  1. Nhập tệp .proto.
  2. Chọn service và RPC method.
  3. Chỉnh sửa request dưới dạng JSON.
  4. Thêm metadata.
  5. Gửi request và xem response.

Công cụ này từng phù hợp với unary call và một số trường hợp streaming cơ bản. Nhưng một kho đã ngừng phát triển đồng nghĩa với:

  • Không có bản vá lỗi hoặc cập nhật bảo mật.
  • Không có cập nhật dependency Electron, Chromium hoặc Node.
  • Các lỗi import proto và streaming hiện có sẽ không được xử lý.
  • Không có bản phát hành mới để hỗ trợ các thay đổi trong hệ sinh thái gRPC.

Vấn đề không chỉ là tìm một GUI khác. Hầu hết backend hiện nay dùng song song gRPC và REST, vì vậy việc tách hai quy trình debug sang hai công cụ độc lập làm tăng chi phí vận hành. Một ứng dụng khách gRPC tốt nên hỗ trợ nhiều hơn việc “tải proto và gửi request”.

Thay thế BloomRPC bằng Apidog

Apidog là nền tảng phát triển API hỗ trợ thiết kế, gỡ lỗi, kiểm thử, mocking và tài liệu. Theo tài liệu gRPC chính thức, bạn có thể dùng Apidog để thay thế trực tiếp quy trình BloomRPC và mở rộng nó cho cả nhóm.

1. Gọi đủ bốn loại gRPC

Apidog hỗ trợ:

  • Unary
  • Server streaming
  • Client streaming
  • Bidirectional streaming

Với streaming, request không chỉ là một lần gửi/nhận. Bạn có thể mở phiên, gửi nhiều message và theo dõi message đã gửi hoặc nhận theo dòng thời gian.

2. Nhập API theo ba cách

Bạn có thể tạo gRPC API từ:

  • Tệp .proto trên máy.
  • URL trỏ tới tệp .proto.
  • Server reflection từ gRPC server đang chạy.

Nếu proto có import dependency, hãy thêm thư mục chứa dependency khi cấu hình import.

3. Chỉnh sửa request bằng JSON

Apidog hiển thị protobuf message dưới dạng JSON có thể chỉnh sửa, tương tự BloomRPC. Ví dụ, với proto:

service UserService {
  rpc GetUser(GetUserRequest) returns (UserResponse);
}

message GetUserRequest {
  string id = 1;
}
Enter fullscreen mode Exit fullscreen mode

Bạn có thể gửi request:

{
  "id": "user_123"
}
Enter fullscreen mode Exit fullscreen mode

Nếu cần hiểu kỹ cách ánh xạ dữ liệu, xem hướng dẫn protobuf sang JSON.

4. Cấu hình TLS, metadata và xác thực

Với từng request, bạn có thể:

  • Chọn grpc:// hoặc grpcs://.
  • Thêm metadata.
  • Lưu token hoặc cấu hình xác thực cùng request.
  • Dùng lại cấu hình đã lưu thay vì dán header thủ công mỗi lần.

Đối với token và mTLS, tham khảo các thực hành tốt về xác thực gRPC.

5. Lưu và chia sẻ cấu hình debug

Khác với BloomRPC, request gRPC trong Apidog có thể được lưu trong project. Điều này giúp nhóm chia sẻ:

  • Địa chỉ server.
  • Request body.
  • Metadata.
  • Thiết lập TLS.
  • Kịch bản kiểm thử.
  • Tài liệu API.

Cách thực hiện một gRPC call sau khi chuyển đổi

Quy trình hằng ngày gần như giống BloomRPC, nhưng có thể lưu lại và chia sẻ.

  1. Tạo hoặc mở project trong Apidog.
  2. Nhập tệp .proto, URL proto hoặc kết nối qua server reflection.
  3. Chọn service và method.
  4. Nhập URL server.
  5. Chọn grpc:// hoặc grpcs://.
  6. Điền JSON request.
  7. Thêm metadata hoặc cấu hình xác thực.
  8. Gửi request.
  9. Lưu request để tái sử dụng.

Ví dụ metadata:

authorization: Bearer <your-token>
x-request-id: debug-001
Enter fullscreen mode Exit fullscreen mode

gRPC trả về status code riêng thay vì HTTP status code. Trong tuần đầu khi chuyển đổi, nên để sẵn tài liệu mã trạng thái gRPC.

Làm việc với gRPC streaming

Streaming là điểm BloomRPC có nhiều hạn chế nhất. Trong Apidog, hãy xử lý streaming như một phiên kết nối trực tiếp:

  1. Chọn RPC method có kiểu streaming.
  2. Mở phiên gọi.
  3. Gửi từng message từ tab message.
  4. Quan sát message gửi và nhận trong timeline.
  5. Đóng phiên khi hoàn tất.

Ví dụ proto cho bidirectional streaming:

service ChatService {
  rpc Chat(stream ChatMessage) returns (stream ChatMessage);
}

message ChatMessage {
  string user = 1;
  string content = 2;
}
Enter fullscreen mode Exit fullscreen mode

Bạn có thể gửi lần lượt:

{
  "user": "alice",
  "content": "Xin chào"
}
Enter fullscreen mode Exit fullscreen mode
{
  "user": "alice",
  "content": "Bạn có ở đó không?"
}
Enter fullscreen mode Exit fullscreen mode

Để chọn đúng kiểu streaming cho service, xem giải thích về truyền phát gRPC.

Dùng server reflection khi không có proto

Nếu server đã bật reflection, bạn không cần tìm đúng phiên bản .proto để debug nhanh.

Quy trình:

  1. Tạo gRPC request mới.
  2. Nhập địa chỉ gRPC server.
  3. Chọn import hoặc khám phá service bằng server reflection.
  4. Duyệt các service và method được server công bố.
  5. Chọn method, điền request JSON và gửi.

Cách này đặc biệt hữu ích khi kiểm tra staging hoặc debug service do nhóm khác sở hữu.

BloomRPC so với Apidog

Tính năng BloomRPC Apidog
Trạng thái Ngừng phát triển từ tháng 1/2023 Đang được phát triển
Unary call
Server/client/bidirectional streaming Một phần, có lỗi đã biết Hỗ trợ cả bốn loại call
Import proto Tệp .proto cục bộ Tệp cục bộ, URL, server reflection
TLS Cơ bản Chọn grpc:// hoặc grpcs:// theo request
Metadata và xác thực Chỉnh sửa metadata Metadata và cấu hình xác thực
Chia sẻ nhóm Không, chỉ cục bộ Lưu và chia sẻ trong workspace
Giao thức khác Chỉ gRPC REST, WebSocket, SSE, GraphQL, gRPC
Kiểm thử, mock, tài liệu Không có Trong cùng project
Giá Miễn phí nhưng bị bỏ rơi Gói miễn phí tối đa 4 người dùng

Di chuyển từ BloomRPC sang Apidog

BloomRPC không có dữ liệu cấu hình di động đáng kể để export. Việc chuyển đổi chủ yếu là tái tạo cấu hình từ repo và server hiện có.

Bước 1: Thu thập tệp .proto

Tìm proto trong repository của bạn. Đây là phần quan trọng nhất của quá trình chuyển đổi.

Ví dụ cấu trúc:

api/
├── proto/
│   ├── user.proto
│   ├── order.proto
│   └── common/
│       └── types.proto
Enter fullscreen mode Exit fullscreen mode

Bước 2: Nhập proto vào Apidog

Trong Apidog:

  1. Tạo project.
  2. Chọn import gRPC proto.
  3. Thêm các tệp .proto.
  4. Nếu proto có import, thêm thư mục dependency.
  5. Kiểm tra service và RPC method đã được nhận diện.

Hoặc dùng server reflection để bỏ qua hoàn toàn bước import tệp.

Bước 3: Cấu hình server và TLS

Nhập endpoint đích, ví dụ:

grpc://localhost:50051
Enter fullscreen mode Exit fullscreen mode

Hoặc với TLS:

grpcs://api.example.com:443
Enter fullscreen mode Exit fullscreen mode

Bước 4: Tạo lại metadata và xác thực

Thêm lại các header, token hoặc thông tin xác thực trước đây bạn từng dán vào BloomRPC.

Ví dụ:

authorization: Bearer <token>
x-tenant-id: tenant-a
Enter fullscreen mode Exit fullscreen mode

Sau đó lưu request để không phải nhập lại.

Bước 5: Lưu và chia sẻ request

Đặt tên request theo mục đích, chẳng hạn:

UserService / GetUser / staging
OrderService / CreateOrder / local
ChatService / Chat / development
Enter fullscreen mode Exit fullscreen mode

Các request này sau đó có thể trở thành bộ cấu hình debug dùng chung cho cả nhóm.

Với một người đang dùng BloomRPC, các bước từ import proto đến gửi request đầu tiên thường chỉ mất khoảng mười phút.

Những lựa chọn thay thế BloomRPC khác

Apidog phù hợp khi gRPC là một phần trong quy trình API lớn hơn. Nếu nhu cầu hẹp hơn, các công cụ sau vẫn đáng cân nhắc.

  • grpcurl: công cụ dòng lệnh tương tự curl cho gRPC. Phù hợp với shell script, CI và kiểm tra ad-hoc trên server đã bật reflection. Xem thêm bài so sánh giải pháp thay thế grpcurl tốt nhất.
  • grpcui: giao diện web tạm thời cho gRPC server, phù hợp khi cần kiểm tra nhanh nhưng không cần lưu trạng thái.
  • Kreya: desktop client cho gRPC và REST, gần với mô hình BloomRPC hơn nếu bạn muốn một công cụ độc lập. Xem Kreya là gìgiải pháp thay thế Kreya tốt nhất.
  • Postman: đã hỗ trợ gRPC từ năm 2022. Đây là lựa chọn khả thi nếu nhóm đã dùng Postman, nhưng các đánh đổi về giá và workspace vẫn cần được cân nhắc. Tham khảo giải pháp thay thế Postman tốt nhất.
  • evans: REPL gRPC cho terminal, phù hợp với người thích workflow tương tác trong terminal hoặc tmux.

Tóm lại:

  • Dùng CLI và CI: chọn grpcurl.
  • Cần client gRPC độc lập: cân nhắc Kreya.
  • Cần gRPC, REST, kiểm thử và tài liệu trong cùng workspace: dùng Apidog.

Câu hỏi thường gặp

BloomRPC còn được duy trì không?

Không. Repository bị ngừng phát triển từ ngày 4/1/2023 và README khuyến nghị không nên tiếp tục sử dụng. Không có bản vá bảo mật, sửa lỗi hoặc bản phát hành mới. Khi chọn ứng dụng khách gRPC cho project mới, không nên xem BloomRPC là một lựa chọn khả thi.

Có thể import thiết lập BloomRPC vào Apidog không?

Không có file import trực tiếp vì BloomRPC không lưu cấu hình di động có ý nghĩa. Thay vào đó:

  1. Import proto từ repository hoặc dùng server reflection.
  2. Nhập URL server và TLS.
  3. Tạo lại metadata, token và request body.
  4. Lưu request trong Apidog.

Sau khi hoàn tất, cấu hình không còn bị khóa trên một máy local.

Apidog có hỗ trợ gRPC streaming không?

Có. Apidog hỗ trợ unary, server streaming, client streaming và bidirectional streaming. Các phiên streaming cho phép gửi message liên tục và theo dõi lưu lượng trong timeline. Xem thêm truyền phát gRPC.

Nếu chỉ cần gọi gRPC nhanh từ terminal thì sao?

Dùng grpcurl. Đây là lựa chọn phù hợp cho script, CI và truy vấn ad-hoc, đặc biệt khi server bật reflection. Bài viết về giải pháp thay thế grpcurl giải thích khi nào CLI không còn đáp ứng đủ nhu cầu.

Có thể kiểm thử gRPC và REST bằng một công cụ không?

Có. Trong Apidog, gRPC, REST, WebSocket, SSE và GraphQL có thể nằm trong cùng project. Điều này hữu ích cho backend cung cấp cả gRPC nội bộ và REST API công khai. Xem quy trình trong hướng dẫn kiểm thử API gRPC.

Ngừng dùng client đã bị ngừng phát triển

BloomRPC đã hoàn thành vai trò lịch sử của nó, nhưng không còn phù hợp với setup mới. Hãy import các tệp .proto vào Apidog hoặc kết nối qua server reflection, cấu hình endpoint và metadata, rồi lưu các request để cả nhóm có thể dùng lại.

Bạn có thể tải xuống Apidog miễn phí. Gói miễn phí hỗ trợ tối đa 4 người dùng, và các tệp proto trong repository là dữ liệu chính bạn cần để bắt đầu chuyển đổi.

Top comments (0)