Как создать папку в Alfresco с помощью RESTful API

Я использую Freshdocs для Android

Я могу войти на сервер Alfresco с помощью этого вызова API:

GET /alfresco/service/api/login?u={username}&pw={password?}

Но как мне создать новую папку в Alfresco?

3 ответа

Решение

Есть два основных варианта, но это будет зависеть от того, что еще вы хотите сделать, и от того, какую версию Alfresco вы используете.

Предполагая, что вы хотите, чтобы все было очень просто, и вы просто хотите создать одну папку, и вы используете Alfresco 4.1 или более позднюю версию, вы можете использовать org.alfresco.repository.node.folder.post WebScript. Для этого просто опубликуйте JSON как

 { "name": "NewNodeName" }

или же

{  
   "name": "NewNodeName",
   "title": "New Node Title",
   "description": "A shiny new node",
   "type": "cm:folder"
}

Для API, который принимает URL-адрес, как /api/site/folder/{site}/{container}/{path}

С другой стороны, если вы хотите выполнить ряд различных операций с файлами и папками (например, перемещаться по структуре папок, создавать папку, загружать в нее файл и т. Д.), Вам следует вместо этого использовать CMIS. Apache Chemistry - отличная библиотека для CMIS, в которой даже есть клиент для Android! Документы для андроид-клиента все еще пишутся, так как порт Android был добавлен только что, поэтому вам может потребоваться обратиться к списку рассылки, если у вас нет времени ждать документов.

Для создания папки через API вы можете использовать следующие запросы:

а) Создать папку определенного типа, используя полный путь к родительской папке

       url: "/../alfresco/service/api/site/folder/" + siteName + "/documentLibrary/" + parentFolderPath
       method: "POST"
       json: {
           name: name
           type: folderType
       }

siteName - имя веб-сайта, созданное в Alfresco;

parentFolderPath - путь к родительской папке;

имя - имя папки;

тип - тип папки.

Пример:

     url: "/../alfresco/service/api/site/folder/example/documentLibrary/books"
       method: "POST"
       json: {
           name: "Pushkin"
           type: "cm:folder"
       }

После оформления запроса папка "Пушкин" создается. Эта папка находится в папке "books" библиотеки документов на веб-сайте "example".

б) Создать папку по nodeRef

nodeRef - это идентификатор объекта в Alfresco. Каждый объект имеет свой собственный nodeRef. Этот запрос создает новый объект внутри данного объекта типа папки.

       xml = '<?xml version="1.0" encoding="utf-8"?>' + '<entry xmlns="http://www.w3.org/2005/Atom"
    xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"
    xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/">' +
           '<title>' + folderName + '</title>' +
           '<summary>' + folderName + '</summary>' +
           '<cmisra:object>' +
           '<cmis:properties>' +
           '<cmis:propertyId
    propertyDefinitionId="cmis:objectTypeId">' +
           '<cmis:value>' + folderType + '</cmis:value>' +
           '</cmis:propertyId>' +
           '</cmis:properties>' +
           '</cmisra:object>' +
           '</entry>';
       url: "/../alfresco/service/api/node/workspace/SpacesStore/" +
    nodeRef + "/children"
       method: "POST"
       headers: {
           "Content-Type": "application/atom+xml;type=entry"
       },
       xml: xml

folderName - имя папки;

folderType - тип папки;

nodeRef - идентификатор папки в Alfresco.

Пример:

       nodeRef = b544cd67-e839-4c60-a616-9605fa2affb7;
       xml = '<?xml version="1.0" encoding="utf-8"?>' +
           '<entry xmlns="http://www.w3.org/2005/Atom"
    xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"
    xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/">' +
           '<title>Example of creating a folder</title>' +
           '<summary>Example of creating a folder</summary>' +
           '<cmisra:object>' +
           '<cmis:properties>' +
           '<cmis:propertyId propertyDefinitionId="cmis:objectTypeId">' +
           '<cmis:value>cm:folder</cmis:value>' +
           '</cmis:propertyId>' +
           '</cmis:properties>' +
           '</cmisra:object>' +
           '</entry>';
       url: "/../alfresco/service/api/node/workspace/SpacesStore/" + nodeRef + "/children"
       method: "POST"
       headers: {
           "Content-Type": "application/atom+xml;type=entry"
        },
       xml: xml

Другие услуги и их описание вы можете найти здесь:

http://jazzteam.org/en/technical-articles/list-of-alfresco-services/

Вы должны использовать POST /alfresco/service/api/path/{store_type}/{store_id}/{id}/children

Прочитайте документы для получения подробной информации:

http://wiki.alfresco.com/wiki/Repository_RESTful_API_Reference

Другие вопросы по тегам