Методы API


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

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

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

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

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

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

Все бренды в Системе созданы по одной модели, то есть наследуются от одной конкретной модели. Например: 

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

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

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

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

{
   "$type": "Loymax.Api.Models.BrandInfo.BrandViewModel, Loymax.Api",
   "id": 117066,
   "guid": "00000000-0000-0000-0000-000000000000",
   "code": "7878b563469841d79a5e5d14fde29cbe",
   "order": 0,
   "state": "Normal",
   "uid": "59e6c953-132d-441b-8ecb-1525b2d06e8b",
   "name": "5752d88d1bdb45be820b2e1f7d3aff76",
   "description": "34ec2bc0c8d74b108239e4cd79a18093",
   "fullDescription": null,
   "url": null,
   "images": []
}