关于通过Moodle Web Service传递用户ID(100)并获取对应用户存储数据JSON字符串的技术问询
获取Moodle指定用户ID存储数据(JSON格式)的可行方案
当然有可行的办法!Moodle自带的Web Service就能轻松实现这个需求,我给你拆解一下具体步骤和细节:
1. 先开启Web Service功能
这是前提哈,得先让你的Moodle站点支持Web Service:
- 进入「站点管理」→「高级功能」,勾选「启用Web服务」
- 接着到「插件 → Web服务 → 管理协议」,启用你需要的协议,最常用的就是REST协议,直接勾上就行
2. 创建专属的Web服务
接下来要建一个专门用来获取用户数据的服务:
- 进入「插件 → Web服务 → 外部服务」,点击「添加」,给服务起个好记的名字,比如
user_data_retrieval - 把「启用」选项设为「是」,然后在「允许的函数」里添加核心函数:
core_user_get_users——这个函数就是用来根据条件拉取用户数据的,完全符合你的需求 - 要是你只需要单个用户的极简数据,也可以看看
core_user_get_user_by_id(部分新Moodle版本支持这个更精准的函数)
3. 生成访问令牌
这个令牌是你调用服务的“钥匙”,得用有权限的用户来生成:
- 进入「插件 → Web服务 → 管理令牌」,点击「添加」
- 选择刚才创建的服务,再选一个有用户查看权限的账号(比如管理员或者有用户管理权限的角色),保存后就能拿到一串令牌字符串,记好它!
4. 发送请求获取JSON数据
一切准备好后,就可以发请求拉数据了,用REST协议的话,请求URL大概是这样的:
https://你的Moodle域名/webservice/rest/server.php?wstoken=你的令牌字符串&wsfunction=core_user_get_users&moodlewsrestformat=json&criteria[0][key]=id&criteria[0][value]=100
参数解释一下:
wstoken:就是刚才生成的令牌,用来验证身份wsfunction:指定调用的函数,这里填core_user_get_usersmoodlewsrestformat=json:明确告诉Moodle返回JSON格式的数据criteria:筛选条件,这里设置按用户ID筛选,值为100,刚好匹配你的需求
几个要注意的点
- 生成令牌的用户必须有足够的权限,比如「查看用户资料」的权限,不然会返回权限不足的错误
- 不同Moodle版本的函数参数可能略有差异,要是遇到问题,可以看看对应版本的官方文档里的Web Service函数说明
- 测试的时候可以用Postman、curl或者直接在浏览器里输URL(仅限测试环境哈),看看返回的JSON数据是不是你要的内容
内容的提问来源于stack exchange,提问作者D-T
相关产品推荐
相关产品推荐

