如果您只想获取 Sakai 安装中每个站点的列表,那么您将必须构建一些自定义的东西,因为所有站点的完整列表不是典型的用例。通常,应用程序对获取特定用户有权访问的站点列表更感兴趣。例如:
http://nightly2.sakaiproject.org:8081/direct/site.json
将返回当前登录用户的完整列表(可能带有分页)。
{"entityPrefix": "site", "site_collection": [
{
"createdDate": 1401938965607,
"createdTime": {
"display": "Jun 4, 2014 11:29 pm",
"time": 1401938965607
},
"description": null,
"htmlDescription": "",
"htmlShortDescription": "",
"iconUrl": null,
"iconUrlFull": null,
"id": "61a1ebbd-e507-4ca3-8f88-65abca0803d9",
"infoUrl": null,
"infoUrlFull": null,
"joinerRole": null,
"lastModified": 1401938965993,
"maintainRole": "maintain",
"modifiedDate": 1401938965993,
"modifiedTime": {
"display": "Jun 4, 2014 11:29 pm",
"time": 1401938965993
},
"owner": "admin",
"props": {
"contact-name": "Sakai Administrator"
},
"providerGroupId": null,
"reference": "\/site\/61a1ebbd-e507-4ca3-8f88-65abca0803d9",
"shortDescription": null,
"siteGroups": null,
"siteOwner": {
"userDisplayName": "Sakai Administrator",
"userEntityURL": "\/direct\/user\/admin",
"userId": "admin"
},
"sitePages": [
{
"id": "e051601e-2162-47c1-9e04-63a033f56cdf",
"layout": 0,
"layoutTitle": "Single Column Layout",
"position": 0,
"props": {
"is_home_page": "true"
},
"reference": "\/site\/61a1ebbd-e507-4ca3-8f88-65abca0803d9\/page\/e051601e-2162-47c1-9e04-63a033f56cdf",
"siteId": "61a1ebbd-e507-4ca3-8f88-65abca0803d9",
"skin": "neo-default",
"title": "Home",
"titleCustom": false,
"url": "http:\/\/nightly2.sakaiproject.org:8081\/portal\/site\/61a1ebbd-e507-4ca3-8f88-65abca0803d9\/page\/e051601e-2162-47c1-9e04-63a033f56cdf",
"activeEdit": false,
"popUp": false
},
{
"id": "2e7c2004-0dc2-47bc-8e55-ca1df8e58c33",
"layout": 0,
"layoutTitle": "Single Column Layout",
"position": 1,
"props": null,
"reference": "\/site\/61a1ebbd-e507-4ca3-8f88-65abca0803d9\/page\/2e7c2004-0dc2-47bc-8e55-ca1df8e58c33",
"siteId": "61a1ebbd-e507-4ca3-8f88-65abca0803d9",
"skin": "neo-default",
"title": "Assignments",
"titleCustom": false,
"url": "http:\/\/nightly2.sakaiproject.org:8081\/portal\/site\/61a1ebbd-e507-4ca3-8f88-65abca0803d9\/page\/2e7c2004-0dc2-47bc-8e55-ca1df8e58c33",
"activeEdit": false,
"popUp": false
},
{
"id": "332c52a8-89fe-45bb-9b1a-bf6bace3e88a",
"layout": 0,
"layoutTitle": "Single Column Layout",
"position": 2,
"props": null,
"reference": "\/site\/61a1ebbd-e507-4ca3-8f88-65abca0803d9\/page\/332c52a8-89fe-45bb-9b1a-bf6bace3e88a",
"siteId": "61a1ebbd-e507-4ca3-8f88-65abca0803d9",
"skin": "neo-default",
"title": "Site Info",
"titleCustom": false,
"url": "http:\/\/nightly2.sakaiproject.org:8081\/portal\/site\/61a1ebbd-e507-4ca3-8f88-65abca0803d9\/page\/332c52a8-89fe-45bb-9b1a-bf6bace3e88a",
"activeEdit": false,
"popUp": false
}
],
"skin": null,
"softlyDeletedDate": null,
"title": "AZ",
"type": "project",
"userRoles": [
"maintain",
"access"
],
"activeEdit": false,
"customPageOrdered": false,
"empty": false,
"joinable": false,
"pubView": true,
"published": true,
"softlyDeleted": false,
"entityReference": "\/site\/61a1ebbd-e507-4ca3-8f88-65abca0803d9",
"entityURL": "http:\/\/nightly2.sakaiproject.org:8081\/direct\/site\/61a1ebbd-e507-4ca3-8f88-65abca0803d9",
"entityId": "61a1ebbd-e507-4ca3-8f88-65abca0803d9",
"entityTitle": "AZ"
},{
...
由于您有一个非常具体的用例,我建议您使用 SiteService(甚至可能是 SQL)来检索您正在寻找的非常有限的数据,然后向 SiteEntityProvider 添加一个新的自定义方法(https://source.sakaiproject .org/svn/entitybroker/trunk/core-providers/src/java/org/sakaiproject/entitybroker/providers/SiteEntityProvider.java)像这样:
@EntityCustomAction(action = "my_custom_method", viewKey = EntityView.VIEW_SHOW)
public boolean myCustomMethod(EntityView view) {
HashMap yourMap = new HashMap();
// put code here to get all the sites data you need from the SiteService or the DB and then put the parts you want to return into a Map and then return that map
return yourMap;
}
然后,您可以像这样调用该方法:
http://nightly2.sakaiproject.org:8081/direct/site/my_custom_method.json