Project

General

Profile

APIForNG » History » Version 7

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