Project

General

Profile

APIForNG » History » Version 8

Alexey Khoroshilov, 02/03/2021 01:41 AM

1 1 Denis Kildishev
h1. APIForNG
2 4 Denis Kildishev
3 1 Denis Kildishev
По текущей модели предполагается использование следующих методов:
4 2 Denis Kildishev
Для всех методов по умолчанию используется один заголовочный параметр
5
Authorization со значением Bearer 36AC0A0F7F271314B72986EB54DB2343
6 1 Denis Kildishev
7
1.Получение списка проектов
8
Method:
9
GET
10
Path:
11
http://localhost:9988/projects
12 2 Denis Kildishev
Без дополнительных параметров
13
Пример выдачи
14 8 Alexey Khoroshilov
<pre><code class="javascript">
15 1 Denis Kildishev
{
16
  "success" : true,
17
  "result" : {
18
    "projects" : [ "Example", "з1", "arch", "stpo"],
19
    "count" : 7
20
  }
21
}
22 8 Alexey Khoroshilov
</code></pre>
23
24 2 Denis Kildishev
Без дополнительных параметров
25 1 Denis Kildishev
26 2 Denis Kildishev
2. Получение содержимого проекта(иерархия), для expandable - ограниченное 1м уровнем 
27 1 Denis Kildishev
Method:
28
GET
29
Path:
30 2 Denis Kildishev
http://localhost:9988/projects/{arch}[/expandable]
31
Здесь {arch} - имя проекта, на данный момент регистрозависимо
32
Без дополнительных параметров
33
Пример выдачи
34 1 Denis Kildishev
{
35
"success": true,
36
"result": {
37
"name": "arch",
38
"nodes": [
39
  {
40
"uuid": "243f4afe-1d28-4652-80b9-4ad123b415a4"
41
"name": "Documents",
42
"type": "DocFolder",
43
44
},
45
  {
46
"uuid": "7a5374ee-eb7a-4731-997d-5f52f00ebc2e"
47
"name": "Requirements",
48
"type": "Requirement",
49
"haveChildren":"true",
50
"children": [
51
  {
52
"uuid": "8ccd86e3-5689-43aa-9241-04728447e8f7",
53
"name": "001",
54
"type": "Requirement",
55
"children": [],
56
},
57
},
58
  {
59
"uuid": "ff42a6f4-f9ac-48c3-b41c-c36395df8a85",
60
"name": "Reports",
61
"type": "ReportFolder"
62
}
63
],
64
}
65
}
66
по умолчанию выдает все дерево с базовым набором из нескольких полей - уникального id uuid, отображаемого имени name, типа type и массива потомков children. 
67
поле haveChildren присутствует если у узла есть потомки и работает даже когда children не видны в режиме expandable для 2 уровня вложенности
68
при режиме [expandable] потомки выдаются до 1 уровня вложенности
69
70
3. Получение данных по поддереву
71
Method:
72
GET
73
Path:
74 5 Denis Kildishev
http://localhost:9988/projects/{TEST}/hierarchy/ff42a6f4-f9ac-48c3-b41c-c36395df8a85[/expandable]
75 2 Denis Kildishev
{TEST} - имя проекта
76 5 Denis Kildishev
id после /hierarchy это id узла для которого получается поддерево, режим /expandable работает аналогично проекту
77 2 Denis Kildishev
Без дополнительных параметров
78 1 Denis Kildishev
Пример выдачи
79
{
80 5 Denis Kildishev
"success": true, 
81 1 Denis Kildishev
"result": {
82
"uuid": "ff42a6f4-f9ac-48c3-b41c-c36395df8a85",
83
"name": "Reports",
84 6 Denis Kildishev
"type": "ReportFolder",
85
"parent": "ff42a6f4-f9ac-48c3-b41c-c36395df8a85"
86 1 Denis Kildishev
}
87
}
88
Содержимое result аналогично описанию одного узла и всех его потомков[или потомков 1 уровня вложенности для expandable] в выдаче проекта
89
90
4. Получение свойств узлов
91
Method:
92
POST
93
Path:
94
http://localhost:9988/projects/TEST/getattributes/
95 2 Denis Kildishev
В теле запроса передаются все uuid ы узлов для которых нужно выдать свойства. Конкретная реализация пока уточняется, текущее предположение - просто передавать в текстовом виде с разделителем ;. Возможно будут передаваться в качестве массива по аналогии с передачей данных форм. Пример "4db0fbf4-f383-4740-9d72-891ef112f742;ff42a6f4-f9ac-48c3-b41c-c36395df8a85".
96
Пример выдачи
97 1 Denis Kildishev
{
98
"success": true,
99
"result": {
100 7 Denis Kildishev
"attributes": {
101 1 Denis Kildishev
"4db0fbf4-f383-4740-9d72-891ef112f742":{
102
"Вид": {
103
"value": "",
104
"type": "STRING"
105
},
106
"_index": {
107
"value": "1",
108
"type": "STRING"
109
},
110
"_name": {
111
"value": "Хронология",
112
"type": "STRING"
113
},
114
"_type": {
115
"value": "Requirement",
116
"type": "STRING"
117
},
118
"_id": {
119
"value": "001",
120
"type": "STRING"
121
},
122
"ForeignID": {
123
"value": "1",
124
"type": "STRING"
125
}
126
},
127
"9dffaddf-a55a-4fa1-a3bc-4a5fade4169f":{
128
"Вид": {
129
"value": "Заголовок",
130
"enumName": "Вид",
131
"valueType": "STRING",
132
"type": "ENUM"
133
},
134
"_index": {
135
"value": "1",
136
"type": "STRING"
137
},
138
"_tags": {
139
"value": [
140
  {
141
"value": "section_Архитектура_ПО_Поток_управления"
142
}
143
],
144
"valuesType": "STRING",
145
"type": "LIST"
146
},
147
"_type": {
148
"value": "Requirement",
149
"type": "STRING"
150
},
151
"_id": {
152
"value": "Поток управления",
153
"type": "STRING"
154
},
155
"_description": {
156
"value": " ",
157
"type": "HTML"
158
},
159
"ForeignID": {
160
"value": "2",
161
"type": "STRING"
162 7 Denis Kildishev
}
163 1 Denis Kildishev
}
164
}
165
}
166
}
167
168
В примере выдача свойств двух узлов. Они расположены в result в виде словаря где ключ это id а значение - набор свойств узла.
169 3 Denis Kildishev
170
5. Метод для работы с ресурсами. Текущая реализация
171
Method:
172
GET
173
Path:
174
http://localhost:9988/projects/{TEST}/nodes/{n}/resources/{resFolder}/{res}
175
{Test} имя проекта
176
{n} - uuid узла
177
{resFolder} папка с ресурсами(внутри {node_id}_resources, например "images")
178
{res} имя файла
179
Возвращает ответ типа APPLICATION_OCTET_STREAM включающий в себя содержимое нужного ресурса. В теле также передается имя файла.
180
Если ресурса нет то выдается ответ NOT_FOUND типа plain text
181
Если передано некорректное имя папки с ресурсами(включающее недопустимые символы) то выдается ответ INVALID FOLDER типа plain text
182 4 Denis Kildishev
183
Предположительно появится метод получения ресурсов по списку для множества узлов но потом
184
Возможный формат передачи данных - json пары
185
{"uuid":"resfolder/resname","uuid2":"resfolder2/resname2"}
186
Возможный тип возвращаемого значения - multipart/mixed. Но при этом размер возвращаемых данных может оказаться значительным