API:FAQ/zh
概要
本页面提供关於MediaWiki Action API的常见问题的一些解答。 本頁面是針對希望了解和使用MediaWiki Action API的技術貢獻者和軟體開發人員。
也请阅读API:Main page。该指南回答了这里没有提及的问题,并汇总了其他一些有用的页面。
关于 API
什么是API?
API是英文Application Programming Interface(应用程序接口)的缩写。它定义多个软件中介之间的交互。 有时,API接口允许程序请求由实现该API接口的程序执行操作。 在Mediawiki中,它指的是web-based APIs,它使用HTTP请求响应机制,返回JSON/XML结构化数据。
什么是REST API?
REST是表现层状态转换(REpresentational State Transfer)的缩写。一组指导原则或约束条件定义了"可表现层状态转换"的系统。可表现层状态转换API——或简称REST API——遵循这些原则,因此是一种更快速、更可靠、且更具拓展性的服务。
API能做什么?
請參閱一些API的使用
在哪里我可以更多地了解API?
这里有一些资源:
- w:Web API--了解各個API
- API简介
- w:zh:表现层状态转换--REST(表现层状态转换)的各個API
一般
MediaWiki Action API是什么?
MediaWiki Action API是一个 REST的全Web服务,可讓用户执行某些wiki操作,如页面创建、身份验证、解析、搜索等。
MediaWiki Action API可以用来做什么?
- 访问维基功能。
- 與維基互動。
- 获取关於各個维基和公共使用者的元信息。
右侧边栏指向 API 支持的许多功能。此外,请参见一些使用 MediaWiki Action API 的维基媒体项目。
如何使用(或调用)MediaWiki Action API?
HTTP请求通常用于调用 Action API。有关详细说明,请阅读教程。
要使用行动API
- 使用Special:ApiSandbox
- 启用浏览器的开发者控制台,并在使用时观察指向
api.php的网络请求。
什么是模块,子模块和参数?
MediaWiki Action API 有许多模块,我们用它们来执行不同的任务。用技术术语来说,模块是ApiBase的子类。模块需要参数。这些参数可能是(也可能不是)子模块。
请考虑以下请求:
在这里:
action是主要模块的一个参数。action=query是另一个模块, 它被称为查询模块。list是查询模块的一个参数。list=search也是一个模块, 它可以被称为action=query的子模块。srsearch是搜索模块的一个参数。它保存搜索字符串'abc'。format是主要模块的一个参数。json是输出格式。
另外,参见介绍和指南
,它描述了action=query模块的子模块。
如何知道要调用哪个模块和子模块?
MediaWiki行动API很龐大,且擴充功能又進一步擴大了它。 以下是解决API请求的几种方法:
- 在侧边栏中,查找您希望实现的功能,并点击链接获取关于调用哪些模块的信息。
- 自文档化API页面包含所有模块和子模块的列表,并附有简要描述。 您可以从主要模块开始,并点击链接查看不同的子模块。 (附加
recursivesubmodules=1查看扩展版本)
在哪里可以找到使用API模块的示例代码?
API文档 页面包含一个“示例”部分,展示了如何使用不同的模块和子模块。 [自动生成的文档]也在模块描述后附有示例。
参见Mediawiki-API-demos,获取 Python和JavaScript的代码示例。
如何控制输出格式?
默认输出格式是JSON。其他输出格式已在最新稳定版本的MediaWiki中被弃用或移除,不建议使用。
在旧版本中,您可以在查询字符串中传递&format=someformat来控制输出格式。
有關資訊,請參閱API:Data formats。
我需要访问令牌吗?
您需要访问令牌才能执行登录、编辑、移动页面等修改操作。
要瞭解更多資訊,請參考API:Tokens或sidebar category的'Authentication'。
如何使用API进行跨站点请求?
你必須使用JSONP或CORS來在MediaWiki上进行跨站點請求。
對於更多細節,請見API:跨站點請求.
查询结果是否有限制?
是的,這取決於查詢參數。例如,對於普通用戶,針對list和property查詢的結果數量不能超過500個。
API 頁面在「附加說明」或「限制」部分包含有關這些限制的資訊。請注意,某些模組在特定情況下會施加更嚴格的限制。
如果您不確定要設定多少的限制,並且只想結果越多越好,請將限制設為max。
API调用是否有限制?
沒有具體的限制。但是,我們建議您進行適量的請求,以避免被封鎖。如果您需要發起大量請求,請事先聯絡管理員。
另請參閱API:禮儀。
在哪里可以获取有关MediaWiki Action API的更新?
您可以訂閱MediaWiki-API-Announce 郵件清單以取得公告和更新。
什么是Wiki dump,我如何運用它们?
維基媒體的資料是維基集合、內容、元資料、搜尋索引等的。 若要使用轉儲,請參閱使用和公共。
在哪里可以获得更多?
如果您在MediaWiki API 文件或自動產生的文件頁面中找不到答案,請隨時透過以下方式與我們聯絡。
- (如果你還沒有帳號的話)請創建一個Wikimedia帳號然後在API討論頁新增一個主題.
- 請在下列地方提出您的問題:
- IRC的#mediawiki 頻道中。
- MediaWiki-API 郵件列表.
擴充功能開發者和維基所有者
如何在擴充功能中建立API模組?
API:擴充功能將引導您完成在擴充功能中建立API模組的完整程序。
API的內部結構是什麼?
API:實作策略解釋了MediaWiki核心中API機制的實作。
如何限制API的使用?
若要限制API的使用,您可以限制使用"寫入API"、或者停用單一模組。
有關說明和範例,請參閱 API:限制API使用。
錯誤和除錯
如何檢測某個錯誤?
如果遇到錯誤,API的錯誤回應會設定HTTP標頭 MediaWiki-API-Error 並傳回一個錯誤結構。
這個錯誤是什麼意思?
請在標準錯誤訊息清單中尋找您的錯誤以了解錯誤的含義。
我該如何提交一個錯誤和回饋?
你可以回報錯誤和提交建議於維基媒體的任務追蹤工具,Phabricator。
注意:
- 添加 MediaWiki-API專案標籤到你的任務中。
- 如果您的報告/要求是由某個擴充功能所提供的,請新增該擴充功能的專案編號(例如: MediaWiki-extensions-AbuseFilter、 MediaWiki-extensions-FlaggedRevs等)。
- 建立新任務前,請先檢查是否有重複項。
- 在繼續操作之前,請先了解Phabricator上的任務建立條款。
有關更多詳細信息,請參閱如何提報錯誤。
我遇到的錯誤是否與我的 API 版本有關?
如果網站運行的是不同版本的MediaWiki,那麼它運行的API版本也會不同。某些在一個版本中支援的模組參數在其他版本中可能已被棄用(或移除)。如果使用這些參數,將會拋出例外。 API頁面會記錄所有此類棄用情況。
有關不同API版本的信息,請參閱發行說明。