Project

General

Profile

APIForNG » History » Revision 6

Revision 5 (Denis Kildishev, 02/01/2021 03:28 PM) → Revision 6/54 (Denis Kildishev, 02/01/2021 03:29 PM)

h1. APIForNG 

 По текущей модели предполагается использование следующих методов: 
 Для всех методов по умолчанию используется один заголовочный параметр 
 Authorization со значением Bearer 36AC0A0F7F271314B72986EB54DB2343 

 1.Получение списка проектов 
 Method: 
 GET 
 Path: 
 http://localhost:9988/projects 
 Без дополнительных параметров 
 Пример выдачи 
 { 
   "success" : true, 
   "result" : { 
     "projects" : [ "Example", "з1", "arch", "stpo"], 
     "count" : 7 
   } 
 } 
 Без дополнительных параметров 

 2. Получение содержимого проекта(иерархия), для expandable - ограниченное 1м уровнем  
 Method: 
 GET 
 Path: 
 http://localhost:9988/projects/{arch}[/expandable] 
 Здесь {arch} - имя проекта, на данный момент регистрозависимо 
 Без дополнительных параметров 
 Пример выдачи 
 { 
 "success": true, 
 "result": { 
 "name": "arch", 
 "nodes": [ 
   { 
 "uuid": "243f4afe-1d28-4652-80b9-4ad123b415a4" 
 "name": "Documents", 
 "type": "DocFolder", 

 }, 
   { 
 "uuid": "7a5374ee-eb7a-4731-997d-5f52f00ebc2e" 
 "name": "Requirements", 
 "type": "Requirement", 
 "haveChildren":"true", 
 "children": [ 
   { 
 "uuid": "8ccd86e3-5689-43aa-9241-04728447e8f7", 
 "name": "001", 
 "type": "Requirement", 
 "children": [], 
 }, 
 }, 
   { 
 "uuid": "ff42a6f4-f9ac-48c3-b41c-c36395df8a85", 
 "name": "Reports", 
 "type": "ReportFolder" 
 } 
 ], 
 } 
 } 
 по умолчанию выдает все дерево с базовым набором из нескольких полей - уникального id uuid, отображаемого имени name, типа type и массива потомков children.  
 поле haveChildren присутствует если у узла есть потомки и работает даже когда children не видны в режиме expandable для 2 уровня вложенности 
 при режиме [expandable] потомки выдаются до 1 уровня вложенности 

 3. Получение данных по поддереву 
 Method: 
 GET 
 Path: 
 http://localhost:9988/projects/{TEST}/hierarchy/ff42a6f4-f9ac-48c3-b41c-c36395df8a85[/expandable] 
 {TEST} - имя проекта 
 id после /hierarchy это id узла для которого получается поддерево, режим /expandable работает аналогично проекту 
 Без дополнительных параметров 
 Пример выдачи 
 { 
 "success": true,  
 "result": { 
 "uuid": "ff42a6f4-f9ac-48c3-b41c-c36395df8a85", 
 "name": "Reports", 
 "type": "ReportFolder", 
 "parent": "ff42a6f4-f9ac-48c3-b41c-c36395df8a85" "ReportFolder" 
 } 
 } 
 Содержимое result аналогично описанию одного узла и всех его потомков[или потомков 1 уровня вложенности для expandable] в выдаче проекта 

 4. Получение свойств узлов 
 Method: 
 POST 
 Path: 
 http://localhost:9988/projects/TEST/getattributes/ 
 В теле запроса передаются все uuid ы узлов для которых нужно выдать свойства. Конкретная реализация пока уточняется, текущее предположение - просто передавать в текстовом виде с разделителем ;. Возможно будут передаваться в качестве массива по аналогии с передачей данных форм. Пример "4db0fbf4-f383-4740-9d72-891ef112f742;ff42a6f4-f9ac-48c3-b41c-c36395df8a85". 
 Пример выдачи 
 { 
 "success": true, 
 "result": { 
 "4db0fbf4-f383-4740-9d72-891ef112f742":{ 
 "Вид": { 
 "value": "", 
 "type": "STRING" 
 }, 
 "_index": { 
 "value": "1", 
 "type": "STRING" 
 }, 
 "_name": { 
 "value": "Хронология", 
 "type": "STRING" 
 }, 
 "_type": { 
 "value": "Requirement", 
 "type": "STRING" 
 }, 
 "_id": { 
 "value": "001", 
 "type": "STRING" 
 }, 
 "ForeignID": { 
 "value": "1", 
 "type": "STRING" 
 } 
 }, 
 "9dffaddf-a55a-4fa1-a3bc-4a5fade4169f":{ 
 "Вид": { 
 "value": "Заголовок", 
 "enumName": "Вид", 
 "valueType": "STRING", 
 "type": "ENUM" 
 }, 
 "_index": { 
 "value": "1", 
 "type": "STRING" 
 }, 
 "_tags": { 
 "value": [ 
   { 
 "value": "section_Архитектура_ПО_Поток_управления" 
 } 
 ], 
 "valuesType": "STRING", 
 "type": "LIST" 
 }, 
 "_type": { 
 "value": "Requirement", 
 "type": "STRING" 
 }, 
 "_id": { 
 "value": "Поток управления", 
 "type": "STRING" 
 }, 
 "_description": { 
 "value": " ", 
 "type": "HTML" 
 }, 
 "ForeignID": { 
 "value": "2", 
 "type": "STRING" 
 } 
 } 
 } 
 } 

 В примере выдача свойств двух узлов. Они расположены в result в виде словаря где ключ это id а значение - набор свойств узла. 

 5. Метод для работы с ресурсами. Текущая реализация 
 Method: 
 GET 
 Path: 
 http://localhost:9988/projects/{TEST}/nodes/{n}/resources/{resFolder}/{res} 
 {Test} имя проекта 
 {n} - uuid узла 
 {resFolder} папка с ресурсами(внутри {node_id}_resources, например "images") 
 {res} имя файла 
 Возвращает ответ типа APPLICATION_OCTET_STREAM включающий в себя содержимое нужного ресурса. В теле также передается имя файла. 
 Если ресурса нет то выдается ответ NOT_FOUND типа plain text 
 Если передано некорректное имя папки с ресурсами(включающее недопустимые символы) то выдается ответ INVALID FOLDER типа plain text 

 Предположительно появится метод получения ресурсов по списку для множества узлов но потом 
 Возможный формат передачи данных - json пары 
 {"uuid":"resfolder/resname","uuid2":"resfolder2/resname2"} 
 Возможный тип возвращаемого значения - multipart/mixed. Но при этом размер возвращаемых данных может оказаться значительным