我目前是大学的学生,我每天都在使用Moodle。 我想访问一些可供我使用的信息(例如,我所参加的课程的信息,哪些作业到期以及何时等)
我对Moodle的API进行了一些研究,但它们似乎都面向实际运行Moodle(我的大学)的高级用户。
作为学生,我有一种简单的方法来获取信息吗?
我的应用程序使用Node.js
答案 0 :(得分:3)
如果您的大学已为移动应用启用了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
,它将在其他网络服务调用中使用。您可以通过调用网络服务userid
获取core_webservice_get_site_info
。请务必使用您在上面获得的令牌替换$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...
}
]
<强>回顾&#39; 强>
先决条件:
查询:
YOURHOST/webservice/rest/server.php?moodlewsrestformat=json
。POST
次请求wstoken
:您的令牌wsfunction
:您正在呼叫的功能application/x-www-form-urlencoded
更多强>
我已经大大简化了它的工作方式以及有哪些替代方案,但这应该可以帮助您入门。您可能有兴趣查看开发人员文档以获取有关可用Web服务的更多信息: