Service Definition
Complete proto file showing all four gRPC patterns: unary, server streaming, client streaming, and bidirectional streaming.
syntax = "proto3";
package shortener;
option go_package = "shortener/pb";
message Link {
int64 id = 1;
string url = 2;
string short_code = 3;
int64 clicks = 4;
}
message CreateLinkRequest { string url = 1; }
message CreateLinkResponse { Link link = 1; }
message GetLinkRequest { string short_code = 1; }
message GetLinkResponse { Link link = 1; }
message DeleteLinkRequest { string short_code = 1; }
message DeleteLinkResponse {}
message ListLinksRequest {}
message BatchCreateLinksResponse {
int64 created_count = 1;
repeated Link links = 2;
}
message SyncRequest {
string short_code = 1;
int64 clicks = 2;
}
message SyncResponse {
string short_code = 1;
int64 total_clicks = 2;
bool acknowledged = 3;
}
service LinkService {
// Unary: one request, one response
rpc CreateLink(CreateLinkRequest) returns (CreateLinkResponse);
rpc GetLink(GetLinkRequest) returns (GetLinkResponse);
rpc DeleteLink(DeleteLinkRequest) returns (DeleteLinkResponse);
// Server streaming: one request, many responses
rpc ListLinks(ListLinksRequest) returns (stream Link);
// Client streaming: many requests, one response
rpc BatchCreateLinks(stream CreateLinkRequest) returns (BatchCreateLinksResponse);
// Bidirectional streaming: many requests, many responses
rpc SyncClicks(stream SyncRequest) returns (stream SyncResponse);
}