Back to Demos
gRPC + HTTP Fallback
Config-driven transport switching from IdServiceImpl
Transport Config
Make API Call
Batch Latency Test
Call History
No calls yet. Click "Call" or "Compare Both" to start.
Production Code (Java)
// From auto-operation - IdServiceImpl.java
@Service
public class IdServiceImpl implements IdService {
@Autowired
private IdProperties idProps;
private IdServiceGrpc.IdServiceBlockingStub grpcStub;
@Override
public Optional<Boolean> blockUser(UserMetadataRequest request) {
String transport = idProps.getTransport(); // "grpc" or "http"
if ("http".equalsIgnoreCase(transport)) {
return callHttp(request);
}
return callGrpc(request);
}
private Optional<Boolean> callGrpc(UserMetadataRequest request) {
try {
UserMetadataResponse response = grpcStub.blockUser(request);
return Optional.of(response.getSuccess());
} catch (StatusRuntimeException e) {
log.error("gRPC call failed, status: {}", e.getStatus());
return Optional.empty();
}
}
private Optional<Boolean> callHttp(UserMetadataRequest request) {
HttpEntity<String> entity = new HttpEntity<>(
gson.toJson(request), headers
);
ResponseEntity<String> response = restTemplate.postForEntity(
idProps.getHttpUrl() + "/api/block-user",
entity, String.class
);
// Parse response...
}
}