Методы API
Вопросы, связанные с работой методов API:
Вопросы, связанные с работой методов API:
Примечание: рекомендуется ознакомиться со стеком технологий, используемых системой Loymax. Объекты, используемые во фреймворке .Net, переводятся из структуры данных в последовательность байтов или строку. В таком формате данные удобно передавать и хранить. Процесс перевода состояния объекта в поток байтов с целью их сохранения в памяти ПК, в базе данных или файле называется сериализацией. Основное назначение сериализации — сохранение состояния объекта, чтобы в случае необходимости была возможность восстановить его. Система Loymax для сериализации/десериализации использует сериализатор Newtonsoft.Json.JsonSerializer. |
Рассмотрим процесс сериализации/десериализации на примере работы метода для получения списка брендов.
Все бренды в Системе созданы по одному шаблону (модели), то есть наследуются от одного типа данных. Алгоритм получения информации о брендах через методы API работает можно представить следующим образом:
| ![]() |
Например, в .NET есть типы Brand1 и BrandBase (Brand1 наследуется от BrandBase).
public class BrandBase
{
public string Name { get; set; }
public string Description { get; set; }
}
public class Brand1 : BrandBase
{
public string Code { get; set; }
}
Newtonsoft JsonConvert добавляет свойство $type в JSON схему для типов во время сериализации и использует его при десериализации.
Таким образом, при сериализации экземпляра класса Brand1 будет создан объект JSON с вышеупомянутым свойством $type.
Brand1 является объектом, созданными по типу BrandBase. Так как сериализатор ожидает получить только объект типа BrandBase, а Brand1 распознает как отдельный тип, который наследуются от общего типа BrandBase, то он присваивает ему свойство $type, в котором указана модель, согласно которой был создан объект, чтобы при десериализации создать объект исходного типа.
В ответе на запрос для получения списка брендов, информация о Brand1 будет выглядеть следующим образом:
{
"$type": "Loymax.Api.Models.BrandInfo.Brand1, Loymax.Api",
"name": "Brand1",
"description": "Новый бренд",
"code": "7878b563333841d79a5e5d14fde29cbe"
}