API:FAQ/zh

概要
本页面提供有关MediaWiki Action API的部分常见问题的解答 This page is intended for technical contributors and software developers who wish to understand and use the MediaWiki Action API.

请同时阅读. 该指南回答了这里没有提及的问题，并汇总了其他一些有用的页面.



关于 API


什么是API?
API是英文Application Programming Interface(应用程序接口)的缩写. 它定义多个软件中介之间的交互. Sometimes an API allows an application to request an action to be done by the application which implements the API. 在Mediawiki中，它指的是web-based APIs，它使用HTTP请求响应机制，返回JSON/XML结构化数据.



什么是REST API?
REST is an acronym for REpresentational State Transfer. A set of guiding principles or constraints define a RESTful system. A RESTful API &mdash; or just a REST API &mdash; adheres to these principles and hence is a faster, more reliable and scalable service.



API能做什么？
See some uses of API.



在哪里我可以更多地了解API？
Here are a few resources:


 * Understanding APIs
 * An Introduction to API’s
 * What is REST — A Simple Explanation for Beginners, Part 1: Introduction

What is the MediaWiki Action API?
The MediaWiki Action API is a RESTful  web service that allows users to perform certain wiki-actions like page creation, authentication, parsing, searching, etc.



MediaWiki Action API可以用来做什么？
The MediaWiki Action API can be used to:


 * access wiki features.
 * interact with a wiki.
 * obtain meta-information about wikis and public users.

The right sidebar points to many features supported by the API. Also, see some Wikimedia projects that use the MediaWiki Action API.



如何使用（或调用）MediaWiki Action API？
HTTP requests are usually used to call the Action API. For detailed instructions, read the tutorial.

要使用行动API


 * 使用Special:ApiSandbox
 * Enable your browser's developer console and watch net requests to  as you interact with the wiki.



什么是模块，子模块和参数？
The MediaWiki Action API has numerous modules that we use to perform different tasks. In technical terms, a module is a subclass of ApiBase. A module requires parameters. These parameters may (or may not) be submodules.

Consider the following request:

here:


 * is a parameter of the main module.
 * is another module. It is called the query module.
 * is a parameter of the query module.
 * is also a module. It can be called a submodule of.
 * is a parameter of the search module. It holds the search string 'abc'.
 * is a parameter of the main module.
 * is the output format.

Also, see Introduction and guidelines. It describes the submodules of the  module.



如何知道要调用哪个模块和子模块？
MediaWiki行动API很龐大，且擴充功能又進一步擴大了它. 以下是解决API请求的几种方法：


 * In the sidebar, look for the feature you wish to implement and follow the link for information about which modules to call.
 * The self-documenting API pages contain a list of all modules and submodules with brief descriptions. You can start at the main module and follow the links to different submodules. (Append  to view the expanded version)



在哪里可以找到使用API​​模块的示例代码？
The API documentation pages contain an 'Examples' section to demonstrate how different modules and submodules can be used. The auto-generated docs also have examples trailing the module descriptions.

See Mediawiki-API-demos for code snippets in Python and JavaScript.



如何控制输出格式？
The default output format is JSON. Other output formats have been deprecated or removed in the latest stable MediaWiki version, and their use is discouraged.

In older versions, to control the output format, you can pass  in the query string.

For information, see API:Data formats.



我需要访问令牌吗？
You will require an access token to perform data modifying actions like logging in, editing, moving pages, etc.

To learn more, refer to API:Tokens or the sidebar category 'Authentication'.



如何使用API​​进行跨站点请求？
You must use JSONP or CORS to make cross-site requests in MediaWiki.

For details, see API:Cross-site requests.



查询结果是否有限制？
Yes, it depends on the query parameter. For example, the results for  and   queries cannot exceed 500 for regular users. The API pages contain information about these limits in the 'Additional notes' section or the 'Limits' section. Note that some modules impose stricter limits under certain conditions.

If you are unsure about what limit to set and just want as many results as possible, set the limit to.



API调用是否有限制？
There is no concrete limit. Yet, we recommend making a reasonable number of calls to prevent getting blocked. If you want to make many requests, contact the administrators beforehand.

Also, see API:Etiquette.



在哪里可以获取有关MediaWiki Action API的更新？
You can subscribe to the MediaWiki-API-Announce mailing list for announcements and updates.

<span id="What_are_wiki_dumps_and_how_can_I_work_with_them?">

什么是Wiki转储，我如何使用它们？
Wikimedia’s data dumps are dumps of wiki collections, content, metadata, search indices, etc. To work with dumps, see using dumps and public dumps.

<span id="Where_can_I_get_more_help?">

在哪里可以获得更多帮助？
If you can't find answers in the MediaWiki API documentation or the auto-generated documentation pages, feel free to reach out in the following ways.


 * 創建Wikimedia帳號（如果你還沒有）並在API討論頁新增一個主題.
 * Ask your question on:
 * IRC in the channel.
 * MediaWiki-API mailing list.

How can I create an API module in an extension?
API:Extensions will walk you through the complete process of creating an API module in an extension.

What is the internal structure of the API?
API:Implementation Strategy explains the implementation of the API machinery in MediaWiki Core.

How can I restrict the API usage?
To restrict the API usage, you can either restrict the use of write API or disable individual modules.

For instructions and examples, see API:Restricting API usage.

How do I detect an error?
If you encounter an error, the error response from the API will set the  HTTP header and return an error structure.

What does this error mean?
Find your error in the list of standard error messages to understand what the error means.

How do I file a bug/feature requests?
You can report bugs and file feature requests on Wikimedia's task tracking tool, Phabricator.

Note:


 * Add the MediaWiki-API project tag to your task.
 * If your report/request is offered by an extension, add that extension's project. (e.g. MediaWiki-extensions-AbuseFilter,  MediaWiki-extensions-FlaggedRevs, etc.)
 * Verify for duplicates before creating a new task.
 * Understand the task creation terms on Phabricator before proceeding.

See How to report a bug for more details.

Am I facing errors due to my API version?
If a website runs a different version of MediaWiki, it would also run a different version of the API. Some module parameters supported in one version might be deprecated (or removed) in others. Such parameters will throw an exception if used. The API pages document any such deprecations.

See the release notes for information regarding different API versions.