Исходный код вики Методы API
Последние авторы
author | version | line-number | content |
---|---|---|---|
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 |