2017-06-20 28 views
1

我目前是大學的學生,每天都在使用Moodle。 我想訪問我可以獲得的一些信息(例如,我正在參加的課程的信息,哪些作業到期以及何時等)作爲學生從Moodle API獲取信息

我對Moodle的API做了一些研究,但似乎面向實際運行Moodle(我的大學)的高級用戶。

作爲學生獲取信息,我有一種簡單的方法嗎?

我的應用程序使用Node.js的

+0

如果沒有學生的API你必須嘗試一些像解析HTML和... –

回答

1

如果你的大學已啓用Web服務的移動應用程序,你可以生成自己的API令牌和調用由移動應用程序使用的Web服務。如果後者未啓用,則必須聯繫管理員以獲取Web服務訪問權限。

演示使用moodle.org

首先,讓我們的API令牌(與你的密碼替換$PASSWORD):

$ curl -d username="fmcorz" -d password="$PASSWORD" 'https://moodle.org/login/token.php?service=moodle_mobile_app' 
{ 
    "token":"SNIPTOKEN", 
    "privatetoken":"SNIPPRIVATE" 
} 

接下來,我們需要您的userid,這將在整個其他使用Web服務調用。您可以撥打網絡服務core_webservice_get_site_info以獲得您的userid。確保使用您在上面獲得的令牌替換$TOKEN

$ curl -d wstoken="$TOKEN" -d wsfunction=core_webservice_get_site_info 'https://moodle.org/webservice/rest/server.php?moodlewsrestformat=json' | python -m json.tool | grep userid 
"userid": 1451616, 

現在,你有你的userid,我們可以要求您在就讀課程

$ curl -d wstoken="$TOKEN" -d wsfunction=core_enrol_get_users_courses -d userid=1451616 'https://moodle.org/webservice/rest/server.php?moodlewsrestformat=json' | python -m json.tool 
[ 
    { 
     ...snip... 
     "fullname": "Moodle in English", 
     "id": 5, 
     ...snip... 
    }, 
    { 
     ...snip... 
     "fullname": "Moodle en fran\u00e7ais", 
     "id": 20, 
     ...snip... 
    }, 
    { 
     ...snip... 
     "fullname": "Moodle Certification", 
     "id": 48, 
     ...snip... 
    } 
] 

重溫」

先決條件:

  • The 個移動應用 web服務必須啓用
  • REST協議必須啓用
  • 您需要令牌的API

查詢:

  • 的請求到YOURHOST/webservice/rest/server.php?moodlewsrestformat=json製造。
  • 請求必須是POST請求
  • 請求必須包含wstoken:您的令牌
  • 請求必須包含wsfunction:您呼叫
  • 求函數類型必須是:application/x-www-form-urlencoded

更多

我已經大大簡化了它的工作原理和內容有替代品,但這應該讓你開始。你可能有興趣在尋找開發者文檔,以獲取有關可用的Web服務的詳細信息: