Исходный код вики Методы API
Последние авторы
| author | version | line-number | content |
|---|---|---|---|
| 1 | (% class="lead" %) | ||
| 2 | Вопросы, связанные с работой методов API: | ||
| 3 | |||
| 4 | |(% style="border-color:white" %)((( | ||
| 5 | (% class="box infomessage" %) | ||
| 6 | ((( | ||
| 7 | **Примечание:** рекомендуется ознакомиться {{html}}<a href="https://docs.loymax.net/xwiki/bin/view/Main/General_information/Used_technologies/">со стеком технологий</a>{{/html}}, используемых системой Loymax. | ||
| 8 | ))) | ||
| 9 | |||
| 10 | ((( | ||
| 11 | Объекты, используемые во фреймворке **.Net**, переводятся из структуры данных в последовательность байтов или строку. В таком формате данные удобно передавать и хранить данные. | ||
| 12 | |||
| 13 | (% class="box" %) | ||
| 14 | ((( | ||
| 15 | Процесс передачи состояния объекта в поток байтов с целью их сохранения его в памяти, в базе данных или файле называется **сериализацией**. Основное назначение сериализации — сохранение состояния объекта, чтобы в случае необходимости была возможность восстановить его. | ||
| 16 | Обратный перевод байтов в структуру данных называется **десериализцией**. | ||
| 17 | ))) | ||
| 18 | |||
| 19 | Система Loymax для сериализации/десериализации использует **Newtonsoft.Json.JsonSerializer**. | ||
| 20 | ))) | ||
| 21 | )))|(% style="border-color:white; text-align:center; width:25%" %){{lightbox image="Group 1 (1).png"/}} | ||
| 22 | |||
| 23 | Рассмотрим процесс сериализации/десериализации на примере работы метода для [[получения списка брендов>>doc:Main.Integration.Ways_to_use_API.API_methods.Methods_of_public_api.Brands.WebHome||anchor="H41F43E43B44344743543D43843544143F43844143A43043144043543D43443E432"]]. | ||
| 24 | |||
| 25 | Все бренды в Системе созданы по одной модели, то есть наследуются от одной конкретной модели. Например: | ||
| 26 | |||
| 27 | * Существует модель **IBrands**. | ||
| 28 | * Пользователь создал бренды: **Brand1 **и **Brand2**. | ||
| 29 | * **Brand1 **и **Brand2 **наследуют все свойства модели **IBrands**. | ||
| 30 | * Т. к. бренды являются объектами .Net, они переводятся в поток байтов для хранения в базе данных. | ||
| 31 | |||
| 32 | Алгоритм получения информации о брендах через методы API работает следующим образом: | ||
| 33 | |||
| 34 | 1. Клиент отправляет запрос на получение списка брендов (##GET: /v1.2/brands##). | ||
| 35 | 1. Сервер обрабатывает запрос, формирует и отправляет SQL-запрос в базу данных на получение списка брендов. | ||
| 36 | 1. База данных в ответ на запрос сервера возвращает серверу список брендов, которые переводятся из потока байтов обратно в объект .Net. | ||
| 37 | 1. Сервер возвращает клиенту список брендов в формате JSON: | ||
| 38 | 1. Сериализатор **Newtonsoft.Json.JsonSerializer **преобразует объект .Net в формат JSON. | ||
| 39 | 1. **Brand1 **и **Brand2 **являются объектами, созданными по модели **IBrands**. Для сериализатора распознает только объект типа **IBrands**. Т. к. сериализатор распознает **Brand1 **и **Brand2 **как отдельные типы, которые наследуются от общего типа **IBrands**, то он присваивает им свойство ##$type##, в котором указана модель, согласно которой был создан объект. | ||
| 40 | |||
| 41 | Таким образом, в ответе на запрос для получения списка брендов, информация о **Brand1 **будет выглядеть следующим образом: | ||
| 42 | |||
| 43 | (% class="box" %) | ||
| 44 | ((( | ||
| 45 | ##{ | ||
| 46 | "$type": "Loymax.Api.Models.BrandInfo.BrandViewModel, Loymax.Api", | ||
| 47 | "id": 117066, | ||
| 48 | "guid": "00000000-0000-0000-0000-000000000000", | ||
| 49 | "code": "7878b563469841d79a5e5d14fde29cbe", | ||
| 50 | "order": 0, | ||
| 51 | "state": "Normal", | ||
| 52 | "uid": "59e6c953-132d-441b-8ecb-1525b2d06e8b", | ||
| 53 | "name": "5752d88d1bdb45be820b2e1f7d3aff76", | ||
| 54 | "description": "34ec2bc0c8d74b108239e4cd79a18093", | ||
| 55 | "fullDescription": null, | ||
| 56 | "url": null, | ||
| 57 | "images": [] | ||
| 58 | }## | ||
| 59 | ))) | ||
| 60 | |||
| 61 | |||
| 62 |