Получение единиц измерения
Пример показывает, как получить список измеряемых величин и их единицы измерения средствами
клиентской библиотеки Ascon.Polynom.Web.Api.Client. Проект — Samples.WebApi.GetMeasureUnit.
Требования
- .NET 8.
- Запущенный web-сервер ПОЛИНОМ:MDM с доступным хранилищем.
- Пакет
Ascon.Polynom.Web.Api.Clientиз локального фида (подключается автоматически).
Алгоритм
- Авторизоваться в web-API.
- Получить список измеряемых величин.
- Выбрать измеряемую величину.
- Получить единицы измерения выбранной величины.
- Обработать и сохранить результат.
- Выйти из сессии.
Авторизация
Авторизация выполняется хелпером PolynomClientSession поверх
AuthorizationService.
Подробно — в разделе
Авторизация в C# через клиентскую библиотеку.
Реализация
Измеряемые величины запрашиваются методом GetAll сервиса
MeasureEntityApiClient
с моделью GetAllMeasureEntityRequest.
Единицы измерения получаются методом GetByEntity сервиса
MeasureUnitApiClient
с моделью GetByEntityMeasureUnitRequest.
using Ascon.Polynom.Web.Api.Client.Enums;
using Ascon.Polynom.Web.Api.Client.Json;
using Samples.WebApi.Common.Services;
using var session = await PolynomClientSession.CreateAsync(cancellationToken);
// Название измеряемой величины.
var measureEntityName = "Длина";
var measureEntities = await session.Factory.CreateMeasureEntityApiClient()
.GetAll(new GetAllMeasureEntityRequest(), cancellationToken);
if (measureUnits is not null && measureUnits.Count > 0)
{
// Базовая единица измерения выбранной величины — для пересчёта значений.
var baseUnit = measureUnits.FirstOrDefault(unit => unit.IsBasic)
?? throw new InvalidOperationException(
$"Базовая единица измерения для величины «{measureEntityName}» не найдена.");
// Сохранение полного списка единиц измерения в файл JSON.
var json = JsonSerializer.Serialize(measureUnits,
new JsonSerializerOptions(PolynomJsonOptions.Options) { WriteIndented = true });
await File.WriteAllTextAsync("measure-units.json", json, cancellationToken);
}
await session.SignOutAsync(cancellationToken);
Используемые методы библиотеки
| Сервис | Метод | Назначение |
|---|---|---|
MeasureEntityApiClient |
GetAll(GetAllMeasureEntityRequest, CancellationToken) |
Список измеряемых величин |
MeasureUnitApiClient |
GetByEntity(GetByEntityMeasureUnitRequest, CancellationToken) |
Единицы измерения измеряемой величины |
Результат
Метод возвращает список MeasureUnit для
выбранной величины; при наличии единиц определяется базовая (IsBasic), а полный список
сохраняется в файл JSON.
Возможные ошибки
- Величина не найдена — ошибку выбросит
First; предварительно проверьте список величин. - Пустой список единиц — у величины не заданы единицы измерения.
- Сессия истекла — библиотека обновит токен и повторит запрос; при неудаче требуется повторный вход.
Ссылки
Пример-приложение в составе SDK: SDK/Web/Samples/Server/Samples.WebApi.GetMeasureUnit.