MediaWiki API扩展JSON

时间:2015-08-05 08:38:05

标签: json mediawiki-api mediawiki-extensions

我开发了一个MediaWiki扩展,使用cURL从外部服务获取(JSON)字符串。

现在我正在寻找一种从MediaWiki系统中检索该字符串的方法。 (此URL将用于AJAX调用。)

首先,我认为MediaWiki API就是这样做的。但是,我似乎无法输出该字符串。

实现这一目标的正确方法是什么?

更新

谢谢,这就是诀窍。为了您的信息,这里有多远:

$this->getResult()->addValue(null, null, array( 'autocomplete' => array( 'server', 'servers' ) ) );
[{"autocomplete":["server","servers"]}]附加到API网址时,

会返回format=json。我正在使用的JavaScript客户端需要{"autocomplete":["server","servers"]}才能正常工作,而不是上面的JSON字符串。换句话说,我需要摆脱[]

出于好奇,自定义打印机还有可行吗?

1 个答案:

答案 0 :(得分:2)

在您的API模块中,覆盖getCustomPrinter()

public function getCustomPrinter() {
    return new ApiFormatRaw(
        $this->getMain(),
        $this->getMain()->createPrinterByName( 'json' )
    );
}

(嵌套createPrinterByName()调用是针对出现错误的后备格式,您可以将其更改为其他格式)

然后,在您的execute()方法或需要返回值的任何地方:

$this->getResult()->addValue( null, 'text', $data_you_want_to_return );
$this->getResult()->addValue( null, 'mime', 'application/json' );