Loymax, 2025

Wiki source code of Методы API


Show last authors
1 (% class="root-extension__layer-composer" %)
2 (((
3
4 )))
5
6 (% class="lead" %)
7 Questions related to the work of API methods:
8
9 * {{showhide showmessage="Why do some API methods return the $type property?" hidemessage="Why do some API methods return the $type property?"}}|(% style="border-color:white" %)(((
10 (% class="box infomessage" %)
11 (((
12 **Note:** It is reccomended to read about{{html}}<a href="https://docs.loymax.net/xwiki/bin/view/Main/General_information/Used_technologies/">the technology stack</a>{{/html}} used by the Loymax system.
13 )))
14
15 (((
16 Objects used in the **.Net** framework are translated from a data structure to a sequence of bytes or a string. In this format it is convenient to transfer and store data.
17
18 (% class="box" %)
19 (((
20 The process of translating an object state into a stream of bytes in order to store them in PC memory, a database or a file is called **serialization**. The main purpose of serialization is to save the state of an object so that it is possible to restore it if necessary.
21 The reverse translation of bytes into a data structure is called **deserialization**.
22 )))
23
24 The Loymax system uses the **Newtonsoft.Json.JsonSerializer** for serialization/deserialization.
25 )))
26 )))|(% style="border-color:white" %){{lightbox image="Group 1 (1).png"/}}
27
28 Let's take the serialization/deserialization process as an example of how the method works for {{html}}<a href="https://docs.loymax.net/xwiki/bin/view/Main/Integration/Ways_to_use_API/API_methods/Methods_of_public_api/Brands/#H41F43E43B44344743543D43843544143F43844143A43043144043543D43443E432">receiving a list of brands</a>{{/html}}
29
30 (((
31
32 )))
33
34 |(% style="border-color:white" %)(((
35 All brands in the System are created using the same template (model), that is, they are inherited from the same data type.
36
37 The algorithm for obtaining information about brands through API methods works as follows:
38
39 1. The client sends a request for a list of brands (##GET: /v1.2/brands###).
40 1. The server processes the request, generates and sends an SQL-query to the database to get a list of brands.
41 1. The database, in response to a server request, returns to the server a list of brands that are translated from the byte stream back into a **.Net** object.
42 1. The server returns to the client a list of brands in JSON format. The **Newtonsoft.Json.JsonSerializer **converts the **.Net** object into JSON format.
43 )))|(% style="border-color:white" %)[[image:BrandBase.png]]
44
45 For example, in **.NET** there are types **Brand1 ** and **BrandBase **(**Brand1 ** inherits from **BrandBase**).
46
47 (% class="box" %)
48 (((
49 ##public class BrandBase
50 {
51 public string Name { get; set; }
52 public string Description { get; set; }
53 }
54 public class Brand1 : BrandBase
55 {
56 public string Code { get; set; }
57 }##
58 )))
59
60 **Newtonsoft JsonConvert** adds **$type ** property to JSON schema for types during serialization and uses it during deserialization.
61
62 Thus, serializing an instance of the **Brand1 class ** will create a JSON object with the aforementioned **$type** property.
63
64 (% class="box infomessage" %)
65 (((
66 **Brand1 **is an object created using the **BrandBase** type. Since the serializer expects to get only an object of type **BrandBase**, and **Brand1 **recognizes it as a separate type that inherits from the common type **BrandBase**, it assigns it the ##$type## property, which specifies the model that the object was created with, to create an object of the source type during deserialization.
67 )))
68
69 In the response to the query for a list of brands, the information about **Brand1 **will look like this
70
71 (% class="box" %)
72 (((
73 ##{##
74
75 ## "$type": "Loymax.Api.Models.BrandInfo.Brand1, Loymax.Api",
76 "name": "Brand1",
77 "description": "New Brand",
78 "code": "7878b563333841d79a5e5d14fde29cbe"
79 }##
80 ))){{/showhide}}
81
82 (% class="root-extension__layer-composer" %)
83 (((
84
85 )))

News
Version history
Tags
Glossary
Site