Методы API


Вопросы, связанные с работой методов API:

Почему в ответах некоторых методов API возвращается свойство $type?

Примечание: рекомендуется ознакомиться со стеком технологий, используемых системой Loymax.

Объекты, используемые во фреймворке .Net, переводятся из структуры данных в последовательность байтов или строку. В таком формате данные удобно передавать и хранить.

Процесс перевода состояния объекта в поток байтов с целью их сохранения в памяти ПК, в базе данных или файле называется сериализацией. Основное назначение сериализации — сохранение состояния объекта, чтобы в случае необходимости была возможность восстановить его.
Обратный перевод байтов в структуру данных называется десериализцией.

Система Loymax для сериализации/десериализации использует сериализатор Newtonsoft.Json.JsonSerializer.

Рассмотрим процесс сериализации/десериализации на примере работы метода для получения списка брендов.

Все бренды в Системе созданы по одному шаблону (модели), то есть наследуются от одного типа данных.

Например:

  • Существует тип BrandBase.
  • Пользователь создал бренды: Brand1 и Brand2.
  • Brand1 и Brand2 наследуют все свойства типа BrandBase.
  • Так как бренды являются объектами .Net, они переводятся в поток байтов для хранения в базе данных. 

Алгоритм получения информации о брендах через методы API работает следующим образом:

  1. Клиент отправляет запрос на получение списка брендов (GET: /v1.2/brands).
  2. Сервер обрабатывает запрос, формирует и отправляет SQL-запрос в базу данных на получение списка брендов.
  3. База данных в ответ на запрос сервера возвращает серверу список брендов, которые переводятся из потока байтов обратно в объект .Net.
  4. Сервер возвращает клиенту список брендов в формате JSON:
    • Сериализатор Newtonsoft.Json.JsonSerializer преобразует объект .Net в формат JSON.
    • Brand1 и Brand2 являются объектами, созданными по типу BrandBase. Так как сериализатор ожидает получить только объект типа BrandBase, а Brand1 и Brand2 распознает как отдельные типы, которые наследуются от общего типа BrandBase, то он присваивает им свойство $type, в котором указана модель, согласно которой был создан объект, чтобы при десериализации создать объект исходного типа.

Таким образом, в ответе на запрос для получения списка брендов, информация о Brand1 будет выглядеть следующим образом:

{
   "$type": "Loymax.Api.Models.BrandInfo.BrandBase, Loymax.Api",
   "id": 111222,
   "guid": "00000000-0000-0000-0000-000000000000",
   "code": "7878b563333841d79a5e5d14fde29cbe",
   "order": 0,
   "state": "Normal",
   "uid": "10e6c953-132d-441b-8ecb-1525b2d06e10",
   "name": "Brand1",
   "description": "Новый бренд",
   "fullDescription": null,
   "url": null,
   "images": []
}

 

Новости
Обновления
Облако тегов
Словарь
Наш блог
YouTube и Rutube
Telegram