Was ist der beste Weg, um eine gRPC-Antwort in einer Spring Boot-REST-API zurückzugeben (Serialisierungsfehler mit ProtoJava

Java-Forum
Anonymous
 Was ist der beste Weg, um eine gRPC-Antwort in einer Spring Boot-REST-API zurückzugeben (Serialisierungsfehler mit Proto

Post by Anonymous »

Ich verwende Spring Boot mit gRPC für die interne Dienstkommunikation.
Einer meiner Dienste stellt einen REST-Endpunkt bereit, der intern einen anderen Dienst über gRPC aufruft, zum Beispiel:

Code: Select all

@GetMapping("/check/{productId}")
public ResponseEntity checkStock(@PathVariable String productId) {
CheckStockResponse body = inventoryClient.checkStock(productId);
return ResponseEntity.ok(body);
}
Die CheckStockResponse ist eine aus einer .proto-Datei generierte Klasse.
Wenn ich versuche, sie direkt zurückzugeben, erhalte ich den folgenden Serialisierungsfehler:

Code: Select all

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
No serializer found for class com.google.protobuf.UnknownFieldSet$Parser
and no properties discovered to create BeanSerializer
(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
(through reference chain: ...)
Frage:
Was ist die beste Vorgehensweise für die Rückgabe einer gRPC-Antwort in einer REST-API?
Soll ich das von Protobuf generierte Objekt immer einem benutzerdefinierten DTO zuordnen?
Oder gibt es eine Möglichkeit, das Protobuf-Objekt ordnungsgemäß direkt in JSON zu serialisieren (z. B. mit Jackson oder Protobuf-Dienstprogramme)?
Das eigentliche Antwortobjekt ist ziemlich groß und verschachtelt, daher würde ich es vorziehen, wenn möglich eine manuelle Feld-für-Feld-Zuordnung zu vermeiden.
Mir geht es hauptsächlich um:
Saubere Trennung zwischen gRPC- und REST-Ebenen
Vermeidung von Serialisierungsproblemen
Leistung und Wartbarkeit

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post