Project

General

Profile

Actions

APIForNG » History » Revision 9

« Previous | Revision 9/54 (diff) | Next »
Denis Kildishev, 02/03/2021 02:39 PM


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" 
  }
}

Содержимое 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": {
    "attributes": {
      "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. Но при этом размер возвращаемых данных может оказаться значительным

Updated by Denis Kildishev about 3 years ago · 9 revisions