用途
本技能用于指导开发者为 Moodle LMS 创建自定义的外部 Web 服务 API,开发过程遵循 Moodle 的外部 API 框架和编码标准。适合需要在 Moodle 之上扩展接口、把 Moodle 能力对外开放的场景。
适用场景
根据资料,以下情况适合使用该技能:
- 为 Moodle 插件创建自定义 Web 服务
- 实现用于课程管理的 REST/AJAX 端点
- 构建用于测验操作、用户追踪或报表的 API
- 将 Moodle 功能暴露给外部应用程序
- 使用 Moodle 开发移动应用后端
使用方式
资料说明,在执行该技能前应先阅读其详细指南(Detailed Guide)。该指南保留了完整的流程与参考材料,其中的安全性、前置条件和验证要求应被视为强制要求。对于聚焦型任务,可只加载相关章节;对于端到端任务,应完整阅读指南。
实现上使用 Moodle 的外部 API 类体系,例如继承 external_api,并通过 execute_parameters()、execute()、execute_returns() 三个静态方法定义参数、执行逻辑与返回值结构。
示例
简单读取 API(获取测验尝试次数)
示例代码位于 local_userlog\external 命名空间下,先声明 defined('MOODLE_INTERNAL') || die(); 并引入 $CFG->libdir/externallib.php,然后使用 external_api、external_function_parameters、external_single_structure、external_value 等类。execute_parameters() 定义 userid 与 courseid 两个整型参数;execute() 中调用 self::validate_parameters() 做参数校验,随后通过 $DB->get_field_sql() 执行一条 SQL,统计 {quiz_attempts} 与 {quiz} 联合后某用户在某课程下的测验尝试总数,并返回 ['quiz_attempts' => (int)$attempts];execute_returns() 返回包含 quiz_attempts 整型字段的单一结构。
复杂写入 API(按分类创建测验)
资料提到另有一个综合示例文件 create_quiz_from_categories.php,涵盖以下内容:
- 多次数据库插入
- 课程模块创建
- 测验实例配置
- 带标签的随机题目选择
- 基于小组的访问限制
- 较完整的错误日志记录
- 事务管理
限制
资料明确列出以下限制:
- 仅在任务与上述范围明确匹配时使用该技能。
- 不应将输出视为针对具体环境的验证、测试或专家评审的替代品。
- 若缺少必需的输入、权限、安全边界或成功标准,应停止并请求澄清。
未提供信息
关于该技能的授权协议、版本号、安装命令、具体价格或收费方式,资料暂未提供。