How to add a new API¶
1, Define new gRPC API¶
Modify “yourservice.proto”, add new method “eatApple”:
+message EatAppleRequest {
+ string num = 1;
+}
+
+message EatAppleResponse {
+ string message = 1;
+}
service YourService {
rpc sayHello (SayHelloRequest) returns (SayHelloResponse) {}
+ rpc eatApple (EatAppleRequest) returns (EatAppleResponse) {}
}
2, Add new url-grpc mapping¶
Modify “service.yaml”:
urlmapping:
- GET /hello YourService SayHello
+ - GET /eat_apple/{num:[0-9]+} YourService EatApple
3, Generate new codes¶
$ turbo generate package/path/to/yourservice -r grpc -I ~/yourservice
4, Implement new gRPC method¶
Edit “grpcservice/impl/yourserviceimpl.go”:
+func (s *YourService) EatApple(ctx context.Context, req *proto.EatAppleRequest) (*proto.EatAppleResponse, error) {
+ return &proto.EatAppleResponse{Message: "Good taste! Apple num=" + strconv.FormatInt(int64(req.Num), 10)}, nil
+}
Now, restart both HTTP and gRPC server, then test:
# start grpc service
$ go run grpcservice/yourservice.go
# start http server
$ go run grpcapi/yourserviceapi.go
# test
$ curl "http://localhost:8081/eat_apple/5"
message:"Good taste! Apple num=5"