Унарный метод¶
Следующий пример — вызов метода Get(). Эту функцию можно вызывать как синхронно, так и асинхронно — такова особенность унарных методов. Ответ приходет сразу после вызова операции. Заголовки можно прочитать до обращения к ResponseAsync, трейлеры — строго после.
async Task Get(CountryServiceClient client, ILogger logger)
{
// создаём объект вызова
var countryCall = client.GetAsync(new CountryIdRequest {Id = 1});
// читаем ответ
var country = await countryCall.ResponseAsync;
logger.LogInformation($"{country.Id}: {country.Name}");
// Читаем заголовки и трейлеры, сериализуем в JSON и пишем в лог
var countryCallHeaders = await countryCall.ResponseHeadersAsync;
logger.LogInformation($"Headers:{Environment.NewLine}{JsonSerializer.Serialize(countryCallHeaders, new JsonSerializerOptions { WriteIndented = true })}");
var countryCallTrailers = countryCall.GetTrailers();
logger.LogInformation($"Trailers:{Environment.NewLine}{JsonSerializer.Serialize(countryCallTrailers, new JsonSerializerOptions { WriteIndented = true })}");
// альтернативный вариант:
// var country = await client.GetAsync(new CountryRequest { Id = 1 });
// Но при этом заголовки и трейлеры будут недоступны
}
Последнее обновление :
24 июня 2023 г.
Дата создания : 23 апреля 2023 г.
Дата создания : 23 апреля 2023 г.