Является ли API gRPC, возвращающий «Any» хорошей идеей? - PullRequest
0 голосов
/ 27 июня 2019

Я понимаю, что здесь нет правильного или неправильного ответа.

Я вижу API gRPC, который возвращает "google.protobuf.Any". Задача API - получить параметр, который сообщает, какую информацию нужно получить, и возвращает одну из «n» вещей.

С точки зрения разработки API, является ли хорошей практикой определение такого API? Другой вариант - определить возвращаемое сообщение с помощью конструкции oneof, которая, на мой взгляд, тесно связывает то, что может вернуть API.

Пожалуйста, дайте мне знать ваши мысли.

Спасибо за ваше время.

rpc getInformation(InfomationRequestParams) returns (google.protobuf.Any);

1 Ответ

0 голосов
/ 27 июня 2019

Возврат любого из API является распространенным явлением. oneof предпочтительнее, если у вас есть строгий набор опций, которые не часто добавляются, но не подходит, если любой может захотеть расширить то, что отправлено. Решение похоже на то, выберете ли вы enum или string в API.

Кажется странным не заключать Any в сообщение, поскольку обычно есть информация, не зависящая от типа. Но это более конкретно относится к тому, что на самом деле предоставляет ваш API, и может быть вполне приемлемым.

...