API:扩展

来自MyaWiki.Org
跳转到导航 跳到搜索

OOJS UI图标 扩展 发展 ·标记扩展 ·解析器函数 ·挂钩 ·专版 · ·魔法词 ·应用程序接口 ·内容模型

此文档涵盖在与MeaWiWiKi 1.30及以后使用的扩展中创建API模块。

模块创建与注册[编辑]

所有API模块都是子类芹菜属碱 但是,一些类型的模块使用派生基类。注册方法也取决于模块类型。

动作模块
为主提供一个值的模块行动参数应该是子类芹菜属碱 . 他们应该注册在扩展子使用子模钥匙
格式化模块
为主提供一个值的模块格式参数应该是子类鹦鹉螺碱. 他们应该注册在扩展子使用单模模块钥匙这是非常罕见的扩展需要添加一个格式模块。
查询子模块
为该模块提供值的模块支柱列表参数到动作=查询应该子类ApqQuixBasic(如果不能作为发电机使用)ApqQuiGeaseBaseBasic(如果可用作发电机)。他们应该注册在扩展子使用子推进模块APILIST模块多肢畸胎钥匙

在所有情况下,注册密钥的值都是一个对象,其中模块名(即参数的值)作为键,类名作为值。模块也可以有条件地使用APIMIN::模块管理器 (用于动作和格式化模块)APIQue::模块管理器 (对于查询子模块)钩子。

实施[编辑]

前缀[编辑]

在API模块的构造函数中,当您调用父级::您可以为模块的参数指定一个可选的前缀。(在生成的文档中,这个前缀,如果有的话,出现在模块的标题中的括号中)。如果您的模块是查询子模块,那么需要一个前缀,因为客户端可以在一个请求中调用多个子模块,每个子模块都有自己的参数。对于动作和格式化模块,前缀是可选的。

参数[编辑]

大多数模块都需要参数。这些都是通过实施来定义的。GETApple EDPARM(). 返回值是一个关联数组,其中键是(不前缀)参数名,值是参数的标量缺省值,或者是使用参数定义参数属性的数组。帕拉姆常数定义芹菜属碱.

该示例说明了语法和一些更常见的语法。帕拉姆常量。

    受保护的 功能 获取允许参数() {
        退货 [
            //具有默认值的可选参数
            “简单” = > “价值”

            /要求参数
            “必需品” = > [
                芹菜属碱::准型 = > “弦”
                芹菜属碱::要求的参数 = > 
            

            //从列表中接受多个值的参数
            “变量” = > [
                //默认值集
                芹菜属碱::PARAMDE-DFLT = > 福奥巴兹巴兹
                /所有可能的值
                芹菜属碱::准型 = > [ “福” “酒吧” 巴兹 “夸克” “弗莱德” “瞎说” 
                /表示接受多个值
                芹菜属碱::准多基因 = > 
                /使用标准的“每个值”文档消息
                芹菜属碱::PARAMAIL = > []
            

            /标准的“极限”参数。通常最好不要改变这个标准。
            “极限” = > [
                芹菜属碱::PARAMDE-DFLT = > 
                芹菜属碱::准型 = > “极限”
                芹菜属碱::帕拉明 = > 
                芹菜属碱::帕拉莫斯 = > 芹菜属碱::LimiTigBig1
                芹菜属碱::PARAMMAX MAX2 = > 芹菜属碱::LimITyBig2
            
        
    }

使用MyaWiKi的I18N机制记录参数。文件编制详情。

执行与输出[编辑]

实际实现该模块的代码进入执行程序()方法此代码通常使用$-> ExtReQuestPestReals]()获取输入参数,并将使用$-> GETRESUTH()得到蚜虫对象将任何输出添加到。

查询子模块应使用$-> GETPACESETE()访问页面集合以进行操作。

可以用作生成器的查询子模块也需要实现。执行生成程序()通过了APIPAGESET应该填充生成的页面。在这种情况下,蚜虫一般应该被使用。

高速缓存[编辑]

默认情况下,API响应被标记为不可缓存(“CaseCelp:Buffic”)!对于动作模块,可以通过调用来缓存$> -GETMIN()-> StcCasHyMeMe(). 这仍然需要客户通过。马克西奇斯迈克斯实际启用缓存的参数。还可以通过调用强制缓存。$> -GETMIN()-> StcCaseMax().

对于查询模块,调用这些方法。您可以通过替代实现缓存。GETCACHMODED().

在这两种情况下,请确保不公开私有数据。

令牌处理[编辑]

如果您的操作模块以任何方式更改wiki,则需要令牌为了使这一点自动处理,实现针()方法,返回模块所需的令牌(可能是“CSRF” 编辑令牌.API基础代码将自动验证客户端在API请求中提供的令牌。令牌参数。

主数据库访问[编辑]

如果模块访问主数据库,则应该实现IsWrrWord()返回方法.

返回误差[编辑]

芹菜属碱包括执行各种检查的几种方法,例如,

但你经常会遇到一些需要自己提出错误的情况。通常的做法是打电话。$> -dieWiTeReRoR(),虽然你有状态值有了错误信息,你可以把它传递给$ -> diestATUS()相反。

如果需要发出警告而不是错误,请使用$-> AdvAdvices()$> -AddiDebug()如果这是一个贬义警告。

文档[编辑]

使用MyaWiKi的I18N机制记录API。需要的消息通常基于模块的“路径”具有缺省名称。对于动作和格式化模块,路径与注册过程中使用的模块名称相同。对于查询子模块,它是用“查询+”前缀的名称。

每个模块都需要一个APIIAL$路径概要消息,这应该是对模块的一行描述。如果需要额外的帮助文本,APIIAL$路径-扩展描述也可以创建。每个参数都需要一个APIIAL$路径-帕拉姆-美元名称消息和参数使用PARAMAIL还需要一个APIIAL$路径-参数值美元名称-美元价值对于每个值。

有关API文档的更多细节可在API:本地化 .

扩展还可以在Wikimdia.ORG上维护额外的API文档。这应该位于扩展的主页上,或者如果需要更多的空间,则在页面上命名。扩展<扩展名>应用程序接口或其子页(例如)中枢神经大信结构讨论为NealWiKi核心的API保留API命名空间。

扩展核心模块[编辑]

由于MiTaWiKi 1.14,可以使用以下钩子扩展核心模块的功能:

具有API功能的扩展列表[编辑]

API扩展对于添加或扩展API的扩展示例。

测试扩展[编辑]