AlfrescoRESTAPI:如何列出站点中的文件夹?
给定此URLAlfrescoRESTAPI:如何列出站点中的文件夹?,alfresco,Alfresco,给定此URL http://localhost:8080/alfresco/service/api/sites/test-3 我回来了: { "url": "\/alfresco\/service\/api\/sites\/test-3", "sitePreset": "site-dashboard", "shortName": "test-3", "title": "Test 3", "description": "", "node": "\/alfres
http://localhost:8080/alfresco/service/api/sites/test-3
我回来了:
{
"url": "\/alfresco\/service\/api\/sites\/test-3",
"sitePreset": "site-dashboard",
"shortName": "test-3",
"title": "Test 3",
"description": "",
"node": "\/alfresco\/service\/api\/node\/workspace\/SpacesStore\/0352afea-797f-4b9e-be27-3bf37e54a2f1",
"tagScope": "\/alfresco\/service\/api\/tagscopes\/workspace\/SpacesStore\/0352afea-797f-4b9e-be27-3bf37e54a2f1",
"siteManagers":
[
"admin"
],
"isPublic": true,
"visibility": "PUBLIC"
}
如何使用该信息获取站点中的文件夹列表?您需要使用不同的API。看看这个shell会话:
$ curl -u admin:admin -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d "{'shortName':{'values':['test'], 'match':'foo'}}" http://localhost:8080/alfresco/service/api/sites/query
{
"url" : "\/alfresco\/service\/api\/sites\/test",
"sitePreset" : "wcmqs-site-dashboard",
"shortName" : "test",
"title" : "test",
"description" : "",
"node" : "\/alfresco\/service\/api\/node\/workspace\/SpacesStore\/e597e4c2-d307-46e3-ba4d-b911262e7261",
"tagScope" : "\/alfresco\/service\/api\/tagscopes\/workspace\/SpacesStore\/e597e4c2-d307-46e3-ba4d-b911262e7261",
"isPublic" : false,
"visibility" : "PRIVATE",
"siteManagers" :
[
"admin"
]
}
// see the 'node' property up there
$ curl -u admin:admin http://p01:8080/alfresco/service/api/node/workspace/SpacesStore/e597e4c2-d307-46e3-ba4d-b911262e7261/children
[..cmis response here..]
一种选择是使用CMIS。不过,根据您的具体需要,您也可以使用一些内置的WebScript来完成列表 在站点的根目录中,有容器,例如documentLibrary和wiki。您可以从container.get webscript获取站点的容器列表。有关详细信息,请查看org/alfresco/slingshot/documentlibrary/container.get.desc.xml。如该文件所示,它的URL模式是/slingshot/doclib/containers/{site} 接下来,当您知道要使用容器中的哪个容器或文件夹时,treenode.get webscript可以让您列出它,例如
curl -u admin:admin http://localhost:8080/alfresco/service/slingshot/doclib/treenode/site/test/documentLibary
{
"totalResults": 0,
"resultsTrimmed": false,
"parent":
{
"nodeRef": "workspace://SpacesStore/92e4f8de-b919-4540-a27a-16c4e53a57bc",
"userAccess":
{
"create": true,
"edit": true,
"delete": true
}
},
"items":
[
]
}
我还建议您使用来查看系统中存在哪些WebScript,并获取有关它们的信息,这对于类似这样的情况有很大帮助加载站点:
使用从节点属性提取的ID获取站点内容:
里面是一个标题为“documentLibrary”的节点。使用它的ID GUID,您可以获取更多的子项
如果您有自定义属性,它们将使用此API调用显示在子项上
使用子项的ID,可以获取其内容
使用此url获取文件夹列表
http://localhost:8080/alfresco/service/api/node/workspace:SpacesStore/store_id/b0697dd1-ae94-4bf6-81c8-5e2fa098ddfa/children
我不明白。当我呼叫您的第二个服务时,项目集合总是空的。但是当我查看这个网站时,我发现里面有一个文档和一个文件夹。这就是webscript,它在执行复制/移动对话框之类的操作时共享调用。我建议您使用firebug之类的工具来准确查看共享在您的案例中调用了什么,以及它返回了什么,并使用它来发现与您稍有不同的地方
{
"url": "\/alfresco\/service\/api\/sites\/test-3",
"sitePreset": "site-dashboard",
"shortName": "test-3",
"title": "test 3",
"description": "",
"node": "\/alfresco\/service\/api\/node\/workspace\/SpacesStore\/0352afea-797f-4b9e-be27-3bf37e54a2f1",
"tagScope": "\/alfresco\/service\/api\/tagscopes\/workspace\/SpacesStore\/0352afea-797f-4b9e-be27-3bf37e54a2f1",
"siteManagers":
[
"admin"
],
"isPublic": true,
"visibility": "PUBLIC"
}
http://localhost:8080/alfresco/service/api/node/workspace:SpacesStore/store_id/b0697dd1-ae94-4bf6-81c8-5e2fa098ddfa/children