API:Query/ja

action=queryモジュールによって、大部分のデータを取り出せるようになります. 編集トークンを含みます.

Introduction and guidelines
queryモジュールは多くの下位モジュールを持ち(query modulesと呼ばれる)、それぞれの下位モジュールには異なる機能があります. queryモジュールには3つのタイプがあります:
 * wikiとログインユーザに関するメタ情報
 * ページのプロパティ
 * ある基準を満たすページの一覧

You should use multiple query modules together to get what you need in one request, e.g.  is a call to six modules in one request.

Unlike meta and list query modules, all property query modules work on a set of pages that you specify using either,  ,  , or   parameters. Use one of the first three if you know the pages' titles, page ids, or revision ids. Do not ask for one page at a time – this is very inefficient, and consumes lots of extra resources and bandwidth. Instead you should request information about multiple pages by combining their titles or ids with the ' | ' pipe symbol:.

Use  if you want to get data about a set of pages that would be the result of another API call. For example, if you want to get data about pages in a certain category, instead of querying  and then querying again with   set to all the returned pages, you should combine the two API calls into one by specifying   in place of the list parameter. More details are in below.

If you're querying Wikimedia wikis and requesting results as  (or php), then specify. The original result format was designed around XML;  the new structure is easier to process (and defaults to utf8).

Sample query
Before we get into the nitty-gritty, here's a useful sample query that simply gets the wiki markup (content) of a page:

api.php?action=query&prop=revisions&rvprop=content&format=jsonfm&formatversion=2&titles=Main%20Page

This means fetch (action=query) the content (rvprop=content) of the most recent revision of Main Page (titles=Main%20Page) in JSON with whitespace to make it easier to read (format=jsonfm).

Alternatively, you can use  as a parameter to index.php to get the content of a page: index.php?title=Main%20Page&action=raw

Specifying pages
You can specify pages in the following ways:
 * By name using the  parameter, e.g.
 * By page ID using the  parameter, e.g.
 * By revision ID using the  parameter, e.g.
 * Most query modules will convert revision ID to the corresponding page ID. Only prop=revisions actually uses the revision ID itself.
 * Using a generator

Specifying titles through the query string (either through  or  ) is limited to 50 titles per query (or 500 for those with the   right, usually bots and sysops).

タイトルの正規化
タイトルの正規化はページタイトルを正統的な形式に変換します. 最初の文字は大文字に変換され、アンダースコアはスペースに置き換えられるなどのことが行われることを意味します. どのqueryモジュールが使われているかに関わらず、タイトルの正規化は自動的に行われます. However, any trailing line breaks in page titles (\n) will cause odd behavior and they should be stripped out first.

見つからないもしくは無効なタイトル
存在しないもしくは無効なタイトルが セクションに表示されますが、but それらは もしくは 属性のセットを持ちます. (JSONやPHPのシリアライズ化などの)数値の配列キーをサポートする出力フォーマットにおいて、見つからないタイトルと無効なタイトルはユニークで、負のページIDを持ちます. query modulesは見つからないもしくは無効なタイトルで何か便利なことはできないのでそれらのタイトルを無視します. The titles in the Special: and Media: namespaces cannot be queried. If any such titles are found in the  parameter or passed to a module by a generator, a warning will be issued.

リダイレクトを解決する
Redirects can be resolved automatically, so that the target of a redirect is returned instead of the given title. When present, they will always contain  and   attributes and may contain a   attribute for those redirects that point to specific sections.

Both normalization and redirection may take place. In the case of multiple redirects, all redirects will be resolved, and in case of a circular redirect, there might not be a page in the 'pages' section (see also below). Redirect resolution cannot be used in combination with the  parameter or with a generator generating revids; doing that will produce a warning and will not resolve redirects for the specified revids.

The examples below show how the  parameter works.

制限
Most list queries return 10 items by default. See here for more information on limits.

クエリの続行
Very often you will not get all the data you want in one API query. When that happens the API result indicates there is more data.

Because there are more data matching the query, the API result includes a  element. If you want further data, you would add its values (in the example,  and  ) to the original request to get the next set of results. You continue to do this until an API result does not have a  element, indicating there are no more data matching the query.

Here is Python code showing how to iterate over query results (using the python requests lib). Note you should not manipulate or depend on any specifics of the values returned inside the  element, as they may change.

batchcomplete
When you make an API request using a generator together with properties, the API result may signal to continue because there are more properties to retrieve for the pages so far, or because there are more pages from the generator, or both. From version 1.25 onwards, the API returns a  element to indicate that all data for the current "batch" of pages has been returned. This can be useful to avoid building a combined result set for thousands of pages when using a generator together with prop modules that may themselves need continuation.

Backwards compatibility of continue
From MediaWiki 1.21 to 1.25, it was required to specify  (i.e. with an empty string as the value) in the initial request to get continuation data in the format described above. Without doing that, API results would indicate there is additional data by returning a  element, explained in Raw query continue. Prior to 1.21, that raw continuation was the only option.

If your application needs to use the raw continuation in MediaWiki 1.26 or later, you must specify  to request it.

Getting a list of page IDs
When not using the new JSON, the result page set in JSON is returned as an object keyed by page ID which can be difficult to properly iterate over in JavaScript. The  parameter returns these page IDs as an array for easier iteration. Note that the ordering of these page IDs still does not necessarily correspond to the ordering of the input (whether directly or via a generator).

Exporting pages
You can export pages through the API with the  parameter. If the  parameter is set, an XML dump of all pages in the   element will be added to the result. The  parameter only gives a result when used with specified titles (Generator, ,   or  ). Note that the XML dump will be wrapped in the requested format; if that format is XML, characters like &lt; and &gt; will be encoded as entities (&amp;lt; and &amp;gt;) If the  parameter is also set, only the XML dump (not wrapped in an API result) will be returned.

関連項目: ページの取り込み

ジェネレーター
ジェネレーターによって、 パラメーターの代わりにリストの出力を使うことができます. リストの出力はページのリストでなければなりません. , もしくは パラメーターの代わりに、そのタイトルが自動的に使われます. 多のquery modulesは パラメーターを通してあたかもユーザーによって提供されたものとしてそれらのページを取り扱います. 1つのジェネレーターのみが許可されます. ページのリストを表示しないlist modulesはジェネレーターとして使うことはできません. prop modulesの中にはジェネレーターとして使うことができるものもあります.

Some property modules can also be used as a generator. Unlike list modules, however, you are required to specify the,   or   for the generator to work on. For example, if you wanted to load all pages that are linked to from the main page, you would use. Other query modules will then ignore the given titles and instead use the titles from the generator.

Parameters passed to a generator must be prefixed with a. For instance, when using, use   instead of.

ジェネレーターはページタイトルを'real'クエリに渡すだけで、それら自身の情報を出力できないことに注意してください. のようなパラメーターを設定しても効果はありません.

ジェネレーターとリダイレクト
ここでは、prop=linksをジェネレーターとして使います. このクエリはTitleからリンクされたすべてのページからのすべてのリンクを取得します. この例では、TitleはTitleAとTitleBへのリンクを持つことを仮定します. TitleBはTitleCへのリダイレクトです. TitleAはTitleA1、TitleA2、TitleA3にリンクします; そしてTitleCはTitleC1とTitleC2にリンクします. パラメーターが設定されているので、リダイレクトは解決されます.

クエリは次のステップを実行します:
 * 1)  パラメーターでタイトルに対するリダイレクトを解決する
 * 2)  パラメーターのすべてのタイトルに対して、それらがリンクするページのリストを取得する
 * 3) そのリストでリダイレクトを解決する
 * 4) タイトルのそのリスト上でprop=linksクエリを実行する

Generators and continuation
You can continue queries using a generator the same way as other queries. In the first call to the API, the generator will create a batch of titles to work on. Each subsequent continuation will give you only data from that batch until you have all of it, at which point the  property will be set. This enables you to process that batch before continuing with the rest of the query, if you wish. The next continuation will then create a new batch from the generator and so on. If you use, please read API:Raw Query Continue to understand which parameters you have to include in the continuation queries. If instead you use, you simply pass all parameters back, as you do for queries without a generator. Please note that for generators used together with a non-query module, the  format will always be used.

ジェネレーターのより詳しい例

 * "T"の文字で始まる4ページに関する情報を表示する
 * https://en.wikipedia.org/w/api.php?action=query&generator=allpages&gaplimit=4&gapfrom=T&prop=info


 * "Re"で始まる最初の2つの非リダイレクトのページの内容を表示する
 * https://en.wikipedia.org/w/api.php?action=query&generator=allpages&gaplimit=2&gapfilterredir=nonredirects&gapfrom=Re&prop=revisions&rvprop=content

Possible warnings

 * No support for special pages has been implemented
 * Thrown if a title in the Special: or Media: namespace is given
 * Redirect resolution cannot be used together with the revids= parameter. Any redirects the revids= point to have not been resolved.
 * Note that this can also be caused by a generator that generates revids