如何在 Moodle LMS 中开发自定义外部 Web Service API

解决 Moodle 插件开发中功能暴露的问题:通过实现 Moodle 标准的 external_api 三方法模式,构建安全、规范的 REST/AJAX 接口,支持外部应用调用课程管理、用户跟踪或报告功能。

为什么需要这个技能

在开发 Moodle 插件或构建配套的移动端 App 时,经常需要从外部访问 Moodle 内部数据或触发特定业务逻辑。由于 Moodle 具有严格的权限控制和复杂的数据库结构,随意创建 PHP 接口会带来严重的安全性风险(如 SQL 注入或权限绕过)。

本技能教你使用 Moodle 官方推荐的 external_api 框架。该框架强制要求定义输入输出结构并验证用户权限,确保你的 API 在满足功能需求的同时,符合 Moodle 的安全审计标准。

适用场景

  • 为 Moodle 插件开发自定义的 Web 服务接口。
  • 实现 REST/AJAX 端点以进行课程管理或成绩导出。
  • 构建第三方应用(如企业 HR 系统)与 Moodle 的数据同步链路。
  • 为 Moodle 移动端应用开发特定的后端支持接口。

核心工作流

Moodle 外部 API 遵循严格的“三方法模式”:

  1. 定义输入参数 (execute_parameters):使用 external_function_parameters 规定请求参数的类型(如 PARAM_INT, PARAM_TEXT)和是否必填。
  2. 实现业务逻辑 (execute)
    • 参数验证:调用 validate_parameters() 确保输入合法。
    • 权限校验:通过 validate_context()require_capability() 检查调用者是否有权操作。
    • 数据操作:使用参数化查询(如 $DB->get_records_sql)防止注入。
  3. 定义返回结构 (execute_returns):使用 external_single_structureexternal_multiple_structure 规定 API 返回的 JSON 格式。

部署步骤

  • 创建 API 类文件 定义参数 编写逻辑 定义返回 db/services.php 中注册服务 清理 Moodle 缓存。

下载和安装

下载 moodle-external-api-development 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐