Evans - ein CLI gRPC Client

gRPC Server testen, aber wie?
Wenn man eine REST oder GraphQL Api entwickelt hat man diverse Tools zur Verfügung, die einen beim Testen unterstützen. Ich persönlich setze hier Insomnia ein, viele werden auch Postman verwenden. Manch einer wird aber auch einfach cURL verwenden. Für gRPC scheinen solche Tools weniger weit verbreitet zu sein.
Ein Tool, dass ich sehr nützlich finde und dass mir hilft, wenn ich mit einem gRPC Service arbeite ist Evans.
Installation & Setup
Die Installation ist unter MacOS am einfachsten:
|
|
Binaries für Linux und Windows sind auf Github ebenfalls verfügbar.
Um Evans effektiv nutzen zu könnnen, empfehle ich auf jeden Fall gRPC Reflection einzuschalten. In Go könnte das so aussehen:
|
|
Erste Schritte
Evans startet Ihr z.B. im Repl Modus mit:
|
|
Ist Reflection so wie oben beschrieben eingeschaltet könnt Ihr Euch mit show package die verfügbaren Services anzeigen lassen und mit packache ServiceName zu einem Service wechseln.
Reflektion
Sinn und zweck des Ganzen ist aber natürlich das Testen RPCs. Auch hier hilft uns die Reflektion. Wenn Ihr ein package gewählt habt könnt Ihr Euch mit show Service anzeigen lassen welche Services in dem Paket verfügbar sind.
Das Schöne ist, dass Euch die RPCs samt Request- und Responsetypen ebenfalls angezeigt werden.
Um mit dem Service arbeiten zu können muss dieser ausgewählt werden. service ServiceName wählt einen Service aus und nun könnnt Ihr Euch mit show rpc die verfügbaren RPCs anzeigen lassen:
RPCs aufrufen
Mit call RPCname könnt Ihr jetzt RPCs aufrufen. In meinem Beispiel hier rufe ich Save auf. Evans fragt nun interaktiv die einzelnen Felder ab, diee für den Aufruf notwendig sind.
|
|
Fazit und Alternativen
Das kann natürlich erst einmal nur als Überblick dienen. Evans kann noch einiges mehr, unter anderem kann damit auch Streaming getestet werden.
Ich persönlich finde, dass das Testen dadurch um einiges leichter wird. Dass es sich um ein CLI tool handelt, finde ich gerade gut, da man ja nicht immer unbedingt ein GUI zur Verfügung hat.
Alternativen gibt es natürlich auch. z.B. Bloom RPC ist ein Electron Client für gRPC mit einem schicken GUI. Wer z.B. mit GraphiQL vertraut ist wird sich hier schnell zurechtfinden.
gRPC Curl ist für einige mit Sicherheit auch eine Möglichkeit.