Czy składnia rpc w protokole proto3 zezwala na puste żądania lub odpowiedzi?Czy mogę zdefiniować wywołanie grpc z pustym żądaniem lub odpowiedzią?
np. Chcę mieć odpowiednik następującego:
rpc Logout;
rpc Status returns (Status);
rpc Log (LogData);
Czy powinienem po prostu utworzyć typ zerowy? poniżej
message Null {};
rpc Logout (Null) returns (Null);
rpc Status (Null) returns (Status);
rpc Log (LogData) returns (Null);
Tak. Pusty jest kanoniczna prośba lub odpowiedź "Nie obchodzi mnie". Będę pamiętać, jeśli myślisz, że możesz "chcieć" argumentów lub zwrócić wartości w przyszłości, zrób nową wiadomość, która po prostu nie ma pól. W ten sposób możesz dodawać nowe pola, gdy potrzebujesz, a nie łamać żadnego kodu aplikacji. Pusta jest świetna, gdy nigdy nie będziesz chciał używać argumentów ani zwracać wartości. –
@EricAnderson ma w zasadzie rację, ale twierdzę, że my jako programiści jesteśmy naprawdę źli, jeśli chodzi o odgadnięcie, czego możemy chcieć w przyszłości. Dlatego zalecam bycie bezpiecznym poprzez zawsze definiowanie niestandardowych parametrów i typów wyników dla każdej metody, nawet jeśli są one puste. –