使用第三方库protoc-gen-validate
- Model.proto
import "validate.proto";
message OrderMain{
int32 order_id=1;
string order_no=2;
int32 user_id=3;
float order_money=4[(validate.rules).float.gt=1];
google.protobuf.Timestamp order_time=5;
repeated OrderDatil order_details=6;
}
- 编译:
protoc --go_out=plugins=grpc:../service --go_opt paths=source_relative \
--validate_out=lang=go:../service Model.proto
会生成Model.pb.validate.go
3. 使用校验:
OrderService.go
func (this *OrderService) NewOrder(ctx context.Context,request *OrderRequest) (*OrderResponse, error){
fmt.Println(request)
err := request.OrderMain.Validate()
if err != nil {
return &OrderResponse{Status:"error",Message:err.Error()},nil
}
return &OrderResponse{Status:"200",Message:"abc"},nil
}