如何通过Moodle API获取正确的Wiki页面ID(ID=7)?
解决Moodle API获取Wiki正确页面ID的问题
你混淆了课程模块ID(cmid)和Wiki页面ID(pageid):core_course_get_contents返回的id=21是Wiki的课程模块ID(即cmid,用于标识课程内的模块实例),而mod_wiki_get_page_contents需要的是具体页面的pageid,二者是完全不同的标识维度。
要通过API获取正确的Wiki页面ID,按以下步骤操作:
第一步:获取目标课程对应的Wiki实例ID
调用mod_wiki_get_wikis_by_courses接口,传入目标课程的courseid参数,接口会返回该课程下所有Wiki实例的信息,其中的id字段是Wiki实例的唯一标识(既不是cmid也不是pageid)。
请求示例:curl -X POST https://你的Moodle地址/webservice/rest/server.php \ -d 'wstoken=你的API令牌' \ -d 'wsfunction=mod_wiki_get_wikis_by_courses' \ -d 'moodlewsrestformat=json' \ -d 'courseids[0]=目标课程ID'第二步:获取Wiki实例下的所有页面ID
用上一步拿到的Wiki实例ID,调用mod_wiki_get_pages接口,接口会返回该Wiki下所有页面的完整列表,每个页面对象中的id字段就是你需要的pageid(比如你提到的7)。
请求示例:curl -X POST https://你的Moodle地址/webservice/rest/server.php \ -d 'wstoken=你的API令牌' \ -d 'wsfunction=mod_wiki_get_pages' \ -d 'moodlewsrestformat=json' \ -d 'wikiid=第一步获取的Wiki实例ID'
如果目标页面名称已知,还可以在mod_wiki_get_pages请求中额外添加pagename=目标页面名称参数,直接筛选出目标页面,无需遍历整个列表。
内容的提问来源于stack exchange,提问作者Raptor
相关产品推荐
相关产品推荐

