Alfresco API

POST /nodes/{nodeId}/children

基本信息

Note: 该端点在Alfresco 5.2和更高版本中可用。

创建一个nodes并将其添加为nodes nodeId的主要子nodes

该端点同时支持JSON和multipart / form-data(文件上传)。

使用多部分/表单数据(Using multipart/form-data

使用filedata字段表示要上载的内容,例如,以下curl命令将在测试用户的主文件夹中创建一个包含test.txt内容的nodes

curl -utest:test -X POST host:port/alfresco/api/-default-/public/alfresco/versions/1/nodes/-my-/children -F filedata=@test.txt

您可以使用名称(name)字段为新文件提供备用名称。

您可以使用nodeType字段创建特定类型。默认值为cm:content。

上传后,您可以使用 renditions 字段异步创建格式表(例如doclib)。另外,由于请求移交是一个后台过程,因此任何移交失败都不会使整个上传失败,并且有可能无声地失败(例如,当前没有可用的转换器)。

使用覆盖(overwrite)来覆盖名称匹配的现有文件。如果文件是可版本控制的,则替换现有内容。

覆盖现有内容时,可以将majorVersion boolean字段设置为true,以指示应创建主要版本。 majorVersion的默认值为false。设置majorVersion会启用该nodes的版本控制(如果尚未进行版本控制)。

覆盖现有内容时,可以使用注释字段添加显示在版本历史记录中的版本注释。如果尚未对此nodes进行版本控制,这还将启用该nodes的版本控制。

您可以将autoRename布尔值字段设置为自动解决名称冲突。如果名称冲突,则API方法将尝试使用整数后缀创建唯一的名称。

您可以使用relativePath字段指定相对于nodes nodeId创建的文件夹结构。在创建nodes之前,将创建relativePath中不存在的文件夹。

提供的任何其他字段将被视为要在新创建的nodes上设置的属性。

Note:不支持设置类型d:content和d:category的属性。

使用JSON(Using JSON

您必须至少指定一个名称(name)和nodeType。例如,要创建一个文件夹:

{
  "name":"My Folder",
  "nodeType":"cm:folder"
}

您可以这样创建一个空文件:

{
  "name":"My text file.txt",
  "nodeType":"cm:content"
}

您可以使用PUT / nodes / {nodeId}API方法更新二进制内容。

您可以在文件夹层次结构内创建文件夹或其他nodes

{
  "name":"My Special Folder",
  "nodeType":"cm:folder",
  "relativePath":"X/Y/Z"
}

relativePath指定要相对于nodesnodeId创建的文件夹结构。 在创建nodes之前,将创建relativePath中不存在的文件夹。

您可以在创建新nodes时设置属性:

{
  "name":"My Other Folder",
  "nodeType":"cm:folder",
  "properties":
  {
    "cm:title":"Folder title",
    "cm:description":"This is an important folder"
  }
}

任何缺少的方面都会自动应用。 例如,上面显示的JSON中的cm:title。 您可以根据需要使用AspectNames字段显式设置方面。

Note: 不支持设置类型d:content和d:category的属性。

通常,对于文件和文件夹,主要子级使用默认的“ cm:contains” assocType在父级文件夹中创建。 如果内容模型允许,那么还可以创建具有不同assoc类型的主要子级。 例如:

{
  "name":"My Node",
  "nodeType":"my:specialNodeType",
  "association":
  {
    "assocType":"my:specialAssocType"
  }
}

创建nodes后,可以添加其他关联。 您也可以在创建nodes时添加关联。 例如,如果内容模型指定一个nodes与一个或多个现有nodes具有强制性关联,则这是必需的。 您可以选择指定一个次级子项数组来创建一个或多个辅助子关联(secondaryChildren),以便新创建的nodes充当父nodes。 您可以选择指定一组目标(targets)来创建一个或多个对等关联,以使新创建的nodes充当源nodes。 例如,在创建时关联一个或多个次级子项:

{
  "name":"My Folder",
  "nodeType":"cm:folder",
  "secondaryChildren":
    [ {"childId":"abcde-01234-...", "assocType":"my:specialChildAssocType"} ]
}

例如,在创建时关联一个或多个目标:

{
  "name":"My Folder",
  "nodeType":"cm:folder",
  "targets":
    [ {"targetId":"abcde-01234-...", "assocType":"my:specialPeerAssocType"} ]
}

Note: 您可以通过指定JSON正文中的nodes列表来创建多个子级。 例如,如果nodeId标识文件夹,则以下JSON正文在指定的nodeId内创建两个文件夹:

[
  {
    "name":"My Folder 1",
    "nodeType":"cm:folder"
  },
  {
    "name":"My Folder 2",
    "nodeType":"cm:folder"
  }
]

如果将列表指定为输入,则在响应正文中返回分页列表而不是条目。 例如:

{
  "list": {
    "pagination": {
      "count": 2,
      "hasMoreItems": false,
      "totalItems": 2,
      "skipCount": 0,
      "maxItems": 100
    },
    "entries": [
      {
        "entry": {
          ...
        }
      },
      {
        "entry": {
          ...
        }
      }
    ]
  }
}

请求方式: POST

请求API:/ nodes / {nodeId} / children

响应等级(状态201)

成功回应

{
  "entry": {
    "id": "string",
    "name": "string",
    "nodeType": "string",
    "isFolder": true,
    "isFile": true,
    "isLocked": false,
    "modifiedAt": "2021-01-08T08:52:11.382Z",
    "modifiedByUser": {
      "displayName": "string",
      "id": "string"
    },
    "createdAt": "2021-01-08T08:52:11.382Z",
    "createdByUser": {
      "displayName": "string",
      "id": "string"
    },
    "parentId": "string",
    "isLink": true,
    "isFavorite": true,
    "content": {
      "mimeType": "string",
      "mimeTypeName": "string",
      "sizeInBytes": 0,
      "encoding": "string"
    },
    "aspectNames": [
      "string"
    ],
    "properties": {},
    "allowableOperations": [
      "string"
    ],
    "path": {
      "elements": [
        {
          "id": "string",
          "name": "string",
          "nodeType": "string",
          "aspectNames": [
            "string"
          ]
        }
      ],
      "name": "string",
      "isComplete": true
    },
    "permissions": {
      "isInheritanceEnabled": true,
      "inherited": [
        {
          "authorityId": "string",
          "name": "string",
          "accessStatus": "ALLOWED"
        }
      ],
      "locallySet": [
        {
          "authorityId": "string",
          "name": "string",
          "accessStatus": "ALLOWED"
        }
      ],
      "settable": [
        "string"
      ]
    }
  }
}

响应内容类型 applicaiton/json

Query参数

名称 类型 是否必填 示例值 描述
autoRename boolean   如果为true,则名称冲突将导致尝试通过使用整数后缀查找唯一名称来自动重命名。
include Array[string]   返回有关该nodes的其他信息。 可以请求以下可选字段:allowableOperations;association;isLink;isFavorite;isLocked;path;permissions
fields Array[string]   field名称的list。 例如,如果您想节省整体带宽,则可以使用此参数来限制响应中返回的field。
例如,如果您想节省整体带宽,则可以使用此参数来限制响应中返回的field。 该列表适用于返回的单个实体或集合中的条目。
如果API方法也支持include参数,则除了在fields参数中指定的fields外,还返回include参数中指定的fields。

Path参数

名称 类型 是否必填 示例值 描述
nodeId string   nodes的标识符。 您也可以使用以下知名别名之一:
-my-
-shared-
-root-

Body参数(nodeBodyCreate

request body示例

{
  "name": "string",
  "nodeType": "string",
  "aspectNames": [
    "string"
  ],
  "properties": {},
  "relativePath": "string",
  "association": {
    "assocType": "string"
  },
  "secondaryChildren": [
    {
      "childId": "string",
      "assocType": "string"
    }
  ],
  "targets": [
    {
      "targetId": "string",
      "assocType": "string"
    }
  ]
}

错误信息描述

状态码 原因
400 无效的参数:nodeId无效,或者nodeBodyCreate无效
401 验证失败
403 当前用户无权创建nodeId的子代
404 nodeIdrenditionId不存在
409 新名称与当前父文件夹中的现有nodes冲突
413 内容超出为网络或系统配置的单个文件大小限制
422 模型完整性异常,包括文件名包含无效字符
507 内容超出为网络或系统配置的总体存储配额限制
default 意外错误

返回结果示例

{
  "error": {
    "errorKey": "string",
    "statusCode": 0,
    "briefSummary": "string",
    "stackTrace": "string",
    "descriptionURL": "string",
    "logId": "string"
  }
}