Исходный код вики Методы API


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

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