作为学生从 Moodle API 获取信息
Getting information from the Moodle API as a student
我目前是一名大学学生,每天都在使用 Moodle。
我想访问一些我可用的信息(例如,我正在参加的 类 的信息、哪些作业到期以及何时等)
我对 Moodle 的 API 做了一些研究,但它似乎都是针对实际运行 Moodle 的高级用户(我的大学)。
对于我这个学生来说,有什么简单的方法可以获取这些信息吗?
我的应用程序使用 Node.js
如果您的大学已为移动应用程序启用网络服务,您可以生成自己的 API 令牌并调用移动应用程序使用的网络服务。如果未启用后者,您必须与您的管理员联系以获得 Web 服务访问权限。
演示使用 moodle.org
首先,让我们获取一个 API 令牌(将 $USERNAME
替换为您的用户名,将 $PASSWORD
替换为您的密码):
$ curl -d username="$USERNAME" -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...
}
]
回顾'
先决条件:
- 必须启用移动应用程序 网络服务
- 必须启用 REST 协议
- 您需要一个 API 令牌
正在查询:
- 向
YOURHOST/webservice/rest/server.php?moodlewsrestformat=json
提出请求。
- 请求必须是
POST
请求
- 请求必须包含
wstoken
:您的令牌
- 请求必须包含
wsfunction
:您正在调用的函数
- 请求类型必须是:
application/x-www-form-urlencoded
更多
我已经大大简化了它的工作原理以及有哪些替代方案,但这应该可以帮助您入门。您可能有兴趣查看开发人员文档以获取有关可用 Web 服务的更多信息:
我目前是一名大学学生,每天都在使用 Moodle。 我想访问一些我可用的信息(例如,我正在参加的 类 的信息、哪些作业到期以及何时等)
我对 Moodle 的 API 做了一些研究,但它似乎都是针对实际运行 Moodle 的高级用户(我的大学)。
对于我这个学生来说,有什么简单的方法可以获取这些信息吗?
我的应用程序使用 Node.js
如果您的大学已为移动应用程序启用网络服务,您可以生成自己的 API 令牌并调用移动应用程序使用的网络服务。如果未启用后者,您必须与您的管理员联系以获得 Web 服务访问权限。
演示使用 moodle.org
首先,让我们获取一个 API 令牌(将 $USERNAME
替换为您的用户名,将 $PASSWORD
替换为您的密码):
$ curl -d username="$USERNAME" -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...
}
]
回顾'
先决条件:
- 必须启用移动应用程序 网络服务
- 必须启用 REST 协议
- 您需要一个 API 令牌
正在查询:
- 向
YOURHOST/webservice/rest/server.php?moodlewsrestformat=json
提出请求。 - 请求必须是
POST
请求 - 请求必须包含
wstoken
:您的令牌 - 请求必须包含
wsfunction
:您正在调用的函数 - 请求类型必须是:
application/x-www-form-urlencoded
更多
我已经大大简化了它的工作原理以及有哪些替代方案,但这应该可以帮助您入门。您可能有兴趣查看开发人员文档以获取有关可用 Web 服务的更多信息: