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


Скрыть последних авторов
Арман Бояхчян 2.1 1 (% class="lead" %)
Арман Бояхчян 40.1 2 Вопросы, связанные с работой методов API:
Арман Бояхчян 6.2 3
Арман Бояхчян 41.1 4 * {{showhide showmessage="Почему в ответах некоторых методов API возвращается свойство $type?" hidemessage="Почему в ответах некоторых методов API возвращается свойство $type?"}}|(% style="border-color:white" %)(((
Арман Бояхчян 28.2 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 )))
Арман Бояхчян 6.2 9
Арман Бояхчян 28.2 10 (((
Арман Бояхчян 32.2 11 Объекты, используемые во фреймворке **.Net**, переводятся из структуры данных в последовательность байтов или строку. В таком формате данные удобно передавать и хранить.
Арман Бояхчян 7.1 12
Арман Бояхчян 28.2 13 (% class="box" %)
14 (((
Арман Бояхчян 36.1 15 Процесс перевода состояния объекта в поток байтов с целью их сохранения в памяти ПК, в базе данных или файле называется **сериализацией**. Основное назначение сериализации — сохранение состояния объекта, чтобы в случае необходимости была возможность восстановить его.
Арман Бояхчян 28.2 16 Обратный перевод байтов в структуру данных называется **десериализцией**.
17 )))
18
Арман Бояхчян 37.1 19 Система Loymax для сериализации/десериализации использует сериализатор **Newtonsoft.Json.JsonSerializer**.
Арман Бояхчян 29.1 20 )))
Арман Бояхчян 43.1 21 )))|(% style="border-color:white" %){{lightbox image="Group 1 (1).png"/}}
Арман Бояхчян 28.2 22
Арман Бояхчян 43.1 23 Рассмотрим процесс сериализации/десериализации на примере работы метода для {{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}}.
Арман Бояхчян 28.2 24
Арман Бояхчян 43.1 25 (((
26
27 )))
28
29 |(% style="border-color:white" %)(((
Арман Бояхчян 35.1 30 Все бренды в Системе созданы по одному шаблону (модели), то есть наследуются от одного типа данных.
Арман Бояхчян 28.2 31
Вера Ретьева 48.1 32 Алгоритм получения информации о брендах через методы API работает следующим образом:
Арман Бояхчян 35.1 33
Арман Бояхчян 28.5 34 1. Клиент отправляет запрос на получение списка брендов (##GET: /v1.2/brands##).
35 1. Сервер обрабатывает запрос, формирует и отправляет SQL-запрос в базу данных на получение списка брендов.
Арман Бояхчян 43.1 36 1. База данных в ответ на запрос сервера возвращает серверу список брендов, которые переводятся из потока байтов обратно в объект **.Net**.
37 1. Сервер возвращает клиенту список брендов в формате JSON. Сериализатор **Newtonsoft.Json.JsonSerializer **преобразует объект **.Net** в формат JSON.
38 )))|(% style="border-color:white" %)[[image:BrandBase.png]]
Арман Бояхчян 28.2 39
Арман Бояхчян 43.1 40 Например, в **.NET** есть типы **Brand1 **и **BrandBase **(**Brand1 **наследуется от **BrandBase**).
Арман Бояхчян 7.1 41
42 (% class="box" %)
43 (((
Арман Бояхчян 43.1 44 ##public class BrandBase
45 {
46 public string Name { get; set; }
47 public string Description { get; set; }
48 }
49 public class Brand1 : BrandBase
50 {
51 public string Code { get; set; }
Арман Бояхчян 28.3 52 }##
Арман Бояхчян 43.1 53 )))
Арман Бояхчян 17.1 54
Арман Бояхчян 43.1 55 **Newtonsoft JsonConvert** добавляет свойство **$type **в JSON схему для типов во время сериализации и использует его при десериализации.
Арман Бояхчян 20.1 56
Арман Бояхчян 43.1 57 Таким образом, при сериализации экземпляра класса **Brand1 **будет создан объект JSON с вышеупомянутым свойством **$type**.
58
59 (% class="box infomessage" %)
60 (((
61 **Brand1 **является объектом, созданными по типу **BrandBase**. Так как сериализатор ожидает получить только объект типа **BrandBase**, а **Brand1 **распознает как отдельный тип, который наследуются от общего типа **BrandBase**, то он присваивает ему свойство ##$type##, в котором указана модель, согласно которой был создан объект, чтобы при десериализации создать объект исходного типа.
62 )))
63
64 В ответе на запрос для получения списка брендов, информация о **Brand1 **будет выглядеть следующим образом:
65
66 (% class="box" %)
67 (((
68 ##{##
69
70 ## "$type": "Loymax.Api.Models.BrandInfo.Brand1, Loymax.Api",
71 "name": "Brand1",
72 "description": "Новый бренд",
73 "code": "7878b563333841d79a5e5d14fde29cbe"
74 }##
75 ))){{/showhide}}

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