用途:为 Moodle 插件创建自定义外部 Web 服务 API,实现课程管理、用户跟踪、测验操作、报表等 REST/AJAX 端点,或将 Moodle 功能开放给外部应用、作为移动应用后端。
主要能力与架构:Moodle 外部 API 遵循三方法模式——execute_parameters() 定义输入参数、execute() 承载业务逻辑、execute_returns() 定义返回结构。支持 PARAM_INT、PARAM_TEXT、PARAM_RAW、PARAM_BOOL、PARAM_FLOAT 等参数类型,以及 external_value、external_single_structure、external_multiple_structure 结构与 VALUE_REQUIRED、VALUE_OPTIONAL、VALUE_DEFAULT 标志。
必要用法:类文件放在 /local/yourplugin/classes/external/your_api_name.php,类需继承 external_api,命名空间为 local_pluginname\external 或 mod_modname\external,并包含 defined('MOODLE_INTERNAL') || die(); 与 externallib.php 引用。execute() 内需依次调用 validate_parameters()、validate_context()、require_capability(),使用带占位符的参数化查询。在 /local/yourplugin/db/services.php 中注册函数与可选服务,键包括 classname、methodname(固定为 'execute')、type('read' 或 'write')、ajax、capabilities、services。可用 Moodle 测试客户端、curl 或 core/ajax 的 JavaScript 调用测试,例如 curl 请求 /webservice/rest/server.php 并传 wstoken、wsfunction、moodlewsrestformat=json 等参数。
高级模式:支持委托事务、课程模块创建、通过分组与 availability 设置活动限制、按标签随机抽题。错误处理建议使用 try-catch 记录带时间戳与上下文的日志并重新抛出异常。
限制:资料未提供该技能的收费、价格、平台支持范围或效果保证,也未提供官方文档链接与版本兼容信息;示例代码为示意,实际字段与配置需按项目核实。