酒井:我如何获得带有REST或WS-interface的站点(课程)列表?

酒井:我如何获得带有REST或WS-interface的站点(课程)列表?,rest,sakai,Rest,Sakai,我试图从外部应用程序与Sakai接口,以获取只读课程信息(标识符、课程名称、描述、讲师等)。它看起来(/direct/site/descripe)就像“site”REST服务只公开需要您已经拥有课程ID的内容。在浏览Sakai源代码时,我注意到有一个SiteService,它有一个名为getSites()的方法,看起来很像我需要的,但(免责声明)我对Sakai几乎一无所知。我只需要这些数据 我的问题是:这似乎是应该存在的东西,我是否遗漏了什么?另外,通过自定义服务公开SiteService ge

我试图从外部应用程序与Sakai接口,以获取只读课程信息(标识符、课程名称、描述、讲师等)。它看起来(/direct/site/descripe)就像“site”REST服务只公开需要您已经拥有课程ID的内容。在浏览Sakai源代码时,我注意到有一个SiteService,它有一个名为getSites()的方法,看起来很像我需要的,但(免责声明)我对Sakai几乎一无所知。我只需要这些数据


我的问题是:这似乎是应该存在的东西,我是否遗漏了什么?另外,通过自定义服务公开SiteService getSites是前进的最佳方式吗

也许您可以尝试使用JWS获取一些信息

sakai中有一些默认服务(TOMCAT\webapps\sakai axis的根目录),您可以通过:)访问这些服务

“SakaiLogin.jws”服务帮助您登录sakai:

publicstringlogin(stringid,stringpw)抛出AxisFault
服务“SakaiScript.jws”提供了一个名为:

public字符串getAllSitesfourser(字符串sessionid)抛出AxisFault
它可以返回与此用户关联的所有站点的列表

也许我没有正确回答您的问题(因为我使用的是SOAP)。我希望这能对你有所帮助

我也在写一个程序从酒井检索数据。但我不太明白如何通过REST或实体代理公开数据

干杯


更新:

您可以尝试ApacheAxis2附带的
wsdl2java.bat
。它将从WSDL服务生成一个Java类。然后您可以直接使用它来使用Sakai提供的这些服务。比如:

wsdl2java.bat -p org.sakai.wsdl -uri http://localhost:8080/sakai-axis/Assignments.jws?wsdl

我已经在使用它了,而且觉得它非常方便。

如果您只想获得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()添加一个新的自定义方法,如下所示:

然后可以这样调用该方法:

http://nightly2.sakaiproject.org:8081/direct/site/my_custom_method.json

可以使用Sakai的
contenthostingservice
中的
getAllSitesCollectionSize
方法列出所有Sakai站点。它应该被称为
getAllSites
。别问我为什么叫这个名字


例如,请参阅。

谢谢您的帖子。是的,SakaiScript web服务端点非常有用,但没有达到我们需要的目的。正如你所说,GetAllSitesFruser似乎很有趣,我们需要一个站点列表来进行注册,而不是在它们关联之后。我们可以有一个在所有网站注册的用户,但在那一点上,它开始感觉不对劲了。
http://nightly2.sakaiproject.org:8081/direct/site/my_custom_method.json