Project

General

Profile

APIForNG » History » Version 3

Denis Kildishev, 02/01/2021 12:52 PM

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