mediawiki使用教程
大多数人都听说过Wikipedia:这是来自人群的知识的终极存储库,几乎涵盖了您可以想到的所有主题,并且可供使用Web浏览器的任何人使用。 无论您要查找什么信息,都可以在Wikipedia上找到详尽的详细信息。 并且由于它是可公开编辑的,因此它始终包含更新的相关信息。
大多数人对维基百科一无所知。 隐藏在幕后的是强大的Web服务API,它使开发人员可以访问,搜索Wikipedia内容并将其集成到自定义Web应用程序中。 该API可通过HTTP工作,并以多种不同格式(包括XML)返回数据,可供编程人员免费使用,并可以创建由Wikipedia庞大的内容数据库提供支持的各种自定义Web应用程序。
在本文中,我向您简要介绍了此API,向您展示了如何将其与我最喜欢的编程语言PHP集成和使用。 本文介绍了API如何工作的基础知识,然后为您提供了列出目录类别,按类别或关键字搜索条目,检索和显示条目以及远程添加和编辑内容的实用演练。
了解API
在深入研究PHP代码之前,需要对Wikipedia API进行一些说明。 首先,尽管我在本文中将其称为“ Wikipedia API”,但需要注意的是,该API并不是仅Wikipedia独有的。 它实际上是运行Wikipedia的MediaWiki基础应用程序的一部分,因此本文概述的技术和API方法也可以在任何其他基于MediaWiki的Wiki上使用。 您可以在参考资料中找到指向MediaWiki和完整的MediaWiki API参考手册的链接 。
与所有基于HTTP的服务一样,API的工作方式是接受包含一个或多个输入参数的HTTP请求,并返回可以由请求客户端解析和使用的响应。 响应通常采用XML格式,因为当今几乎每种编程语言都可以解析XML。 但是,也可以请求其他格式的响应,例如JSON,WDDX,YAML或序列化PHP。
API的每个HTTP请求都必须包含一个强制性的“ action”参数,该参数指定了所需的操作。 此参数可以是查询,编辑或删除操作,身份验证请求或其他任何受支持的操作。 除了此必需的参数之外,还必须根据选择的操作传递其他参数,例如,用于查询的搜索关键字,用于编辑或删除操作的页面标题,或用于认证的用户名和密码。
要查看运行中的API,请尝试在您喜欢的Web浏览器中访问以下URL。 ( 注意:此URL实际上是单个字符串。仅出于格式化目的,该URL显示为两行。)
http://en.wikipedia.org/w/api.php?action=query&list=allcategories&acprop=size
&acprefix=hollywood&format=xml
此方法返回以前缀“好莱坞”开头的前10个Wikipedia类别的列表。 清单1展示了对此请求的原始XML响应。
清单1.一个示例API feed
<?xml version="1.0"?>
<api>
<query>
<allcategories>
<c size="31" pages="28" files="0" subcats="3"
xml:space="preserve">Hollywood</c>
<c size="0" pages="0" files="0" subcats="0"
xml:space="preserve">Hollywood's Rock Walk inductees</c>
<c size="0" pages="0" files="0" subcats="0"
xml:space="preserve">Hollywood, California</c>
<c size="1" pages="1" files="0" subcats="0"
xml:space="preserve">Hollywood, Florida</c>
<c size="0" pages="0" files="0" subcats="0"
xml:space="preserve">Hollywood, Los Angeles, California</c>
<c size="0" pages="0" files="0" subcats="0"
xml:space="preserve">Hollywood.com/celebrity/Wanda Shelley</c>
<c size="0" pages="0" files="0" subcats="0"
xml:space="preserve">Hollywood Actors</c>
<c size="0" pages="0" files="0" subcats="0"
xml:space="preserve">Hollywood Actress</c>
<c size="0" pages="0" files="0" subcats="0"
xml:space="preserve">Hollywood Blacklist</c>
<c size="2" pages="2" files="0" subcats="0"
xml:space="preserve">Hollywood Boulevard</c>
</allcategories>
</query>
<query-continue>
<allcategories acfrom="Hollywood Cemetery (Richmond)" />
</query-continue>
</api>
列出类别和页面
现在您已经了解了API的工作原理,下面让我们看一些代码。 在本文全文中,我假定您熟悉HTML和XML,并且您具有一个工作正常的Apache / PHP开发环境,并且安装了最新版本的Zend Framework。 我还假定您了解使用PHP中的类和对象的基础知识,因为本文中使用PHP组件是按照OOP原则编写的。
要与API交互,您需要一个HTTP客户端,该客户端能够传输GET和POST请求并处理响应。 Zend Framework的Zend_Rest_Client组件是一个很好的工具,该组件专门为试图将PHP应用程序与Web服务集成的开发人员设计。 该客户端可用于对服务端点执行GET,POST,PUT和DELETE响应。 XML响应作为Zend_Rest_Client_Response对象的实例返回,从而可以轻松访问各个响应属性。
清单2说明了在PHP脚本的上下文中使用Zend_Rest_Client检索和显示清单1中的类别的过程。
清单2.列出维基百科类别
<?php
// load Zend classes
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Rest_Client');
// define category prefix
$prefix = 'hollywood';
try {
// initialize REST client
$wikipedia = new Zend_Rest_Client('http://en.wikipedia.org/w/api.php');
// set query parameters
$wikipedia->action('query');
$wikipedia->list('allcategories');
$wikipedia->acprefix($prefix);
$wikipedia->