API:Query
Эта страница является частью документации по API действий MediaWiki. |
Модуль action=query
позволяет вам получать информацию о вики и хранящиеся в ней данные, такие как вики-текст конкретной страницы, ссылки и категории набора страниц, или токен, который вам нужен для изменения содержимого вики .
Документация по API
Модули запросов
Модуль запросов имеет три типа подмодулей (также называемых модулями запросов):
- Метаинформация о вики и вошедшем в систему пользователе.
- Свойства страниц, включая версии страниц и их содержание.
- Списки страниц, соответствующих определенным критериям.
Примеры
Пример 1: Указание страниц
В отличие от модулей запросов мета и списков, все модули запросов свойств работают с набором страниц, которые можно указать одним из следующих способов:
- По имени с помощью параметра
titles
, напримерtitles=Foo|Bar|Main_Page
. - По идентификатору страницы с помощью параметра
pageids
, напримерpageids=123|456|75915
. - По идентификатору версии с использованием параметра
revids
, напримерrevids=478198|54872|54894545
. Большинство модулей запросов преобразуют идентификатор версии в соответствующий идентификатор страницы. Только prop=revisions на самом деле использует сам идентификатор версии. - Используя генератор.
GET-запрос
Ответ
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 1130,
"ns": 0,
"title": "Avicenna"
},
{
"pageid": 17412,
"ns": 0,
"title": "Klein bottle"
},
{
"pageid": 33642,
"ns": 0,
"title": "Warrant"
}
]
}
}
Пример 2: Нормализация заголовка
Нормализация заголовков преобразует заголовки страниц в их каноническую форму.
Это означает использование заглавных букв в первом символе, замена подчеркиваний пробелами и изменение пространства имен на локализованную форму, определенную для этой вики.
GET-запрос
Ответ
{
"batchcomplete": true,
"query": {
"normalized": [
{
"fromencoded": false,
"from": "Project:articleA",
"to": "Wikipedia:ArticleA"
},
{
"fromencoded": false,
"from": "article_B",
"to": "Article B"
}
],
"pages": [
{
"ns": 0,
"title": "Article B",
"missing": true
},
{
"ns": 4,
"title": "Wikipedia:ArticleA",
"missing": true
}
]
}
}
Пример 3: Отсутствующие и недопустимые заголовки
Заголовки, которые не существуют или являются недопустимыми, будут иметь в ответе соответствующий атрибут missing
или invalid
.
In output formats that support numeric array keys, missing and invalid titles will have negative page IDs.
In some cases, a title can be viewed by a user but cannot be accessed by the API, such as pages that mirror content from another wiki.
These titles will have a known
attribute set in the response.
GET-запрос
Ответ
{
"batchcomplete": true,
"query": {
"pages": [
{
"ns": 0,
"title": "Doesntexist",
"missing": true
},
{
"title": "Talk:",
"invalidreason": "The requested page title is empty or contains only the name of a namespace.",
"invalid": true
},
{
"pageid": 15580374,
"ns": 0,
"title": "Main Page"
}
]
}
}
Пример 4: Продолжение запросов
Когда в ответ на запрос возвращаются не все данные, будет атрибут continue
указывающий на наличие дополнительных данных.
GET-запрос
Ответ
{
"continue": {
"accontinue": "List_of_largest_companies_in_Sri_Lanka",
"continue": "-||"
},
"query": {
"allcategories": [
{
"category": "List of BioWare characters"
},
{
"category": "List of Harlequin Romance novels"
},
{
"category": "List of MPs elected in UK elections templates"
},
{
"category": "List of Metamorphoses characters"
},
{
"category": "List of Rockstar Games characters"
},
{
"category": "List of Star Trek awards and nominations"
},
{
"category": "List of Swedish films of the 2020s"
},
{
"category": "List of association football clubs in the Republic of Ireland templates"
},
{
"category": "List of awards and nominations received by Aleksej Pechkuroy"
},
{
"category": "List of cabinet templates"
}
]
}
}
Чтобы получить дополнительные данные, добавьте его значения в исходный запрос.
GET request
Response
{
"batchcomplete": true,
"query": {
"allcategories": [
{
"category": "List of largest companies in Sri Lanka"
},
{
"category": "List of longest beaches of the world"
},
{
"category": "List of ministers by ministry of Bangladesh"
},
{
"category": "List of people from Palm Beach, Florida"
},
{
"category": "List of video game characters"
}
]
}
}
Example 5: Batchcomplete
The API returns a batchcomplete
element to indicate that all data for the current batch of items has been returned.
MW 1.25+
In the response of the sample query below, batchcomplete
has been included to indicate that all the data for each of the three images has been returned.
The next continuation will begin returning data for the next set of 3 images.
GET-запрос
Ответ
{
"batchcomplete": true,
"continue": {
"aicontinue": "20020822143445|Do_You_Want_to_Know_a_Secret_(Beatles_song_-_sample).ogg",
"continue": "-||"
},
"query": {
"allimages": [
{
"name": "Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"timestamp": "2002-08-04T19:55:17Z",
"url": "https://upload.wikimedia.org/wikipedia/en/6/64/Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=67723",
"ns": 6,
"title": "File:Simon and Garfunkel - Mrs Robinson.ogg"
},
{
"name": "Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"timestamp": "2002-08-04T20:01:36Z",
"url": "https://upload.wikimedia.org/wikipedia/en/c/c1/Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=67779",
"ns": 6,
"title": "File:Simon and Garfunkel - Scarborough Fair.ogg"
},
{
"name": "Beatles_please_me.ogg",
"timestamp": "2002-08-22T14:34:00Z",
"url": "https://upload.wikimedia.org/wikipedia/en/e/ee/Beatles_please_me.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Beatles_please_me.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=74826",
"ns": 6,
"title": "File:Beatles please me.ogg"
}
]
}
}
Пример 6: Генераторы
Используйте генераторы, если вы хотите получить данные о наборе страниц.
Например, чтобы получить данные о страницах в определённой категории, вместо запроса list=categorymembers
, а затем повторного запроса с pageids
, перечисляющим все возвращённые страницы, объедините два вызова API в один, используя generator=categorymembers
.
При использовании модуля списка в качестве генератора вам не нужно указывать страницы.
Однако для модуля свойств вы должны указать страницы, на которых будет работать генератор.
Например, чтобы загрузить все страницы, связанные с главной страницей, используйте generator=links&titles=Main%20Page
.
Параметры, передаваемые генератору, должны начинаться с g
. Например, при использовании generator=backlinks
, используйте gbllimit
вместо bllimit
.
Примера запроса ниже получает ссылки и категорий для первых трёх страниц в основном пространстве имен, начиная с "Ba".
GET-запрос
Ответ
{
"continue": {
"plcontinue": "14977970|0|Kirkwall_Ba_game",
"continue": "||categories"
},
"query": {
"pages": [
{
"pageid": 98178,
"ns": 0,
"title": "Ba",
"links": [
{
"ns": 0,
"title": "BA"
},
{
"ns": 4,
"title": "Wikipedia:Mainspace"
},
{
"ns": 4,
"title": "Wikipedia:Naming conventions (capitalization)"
},
{
"ns": 4,
"title": "Wikipedia:Protection policy"
},
{
"ns": 4,
"title": "Wikipedia:Redirect"
},
{
"ns": 10,
"title": "Template:R from miscapitalisation"
},
{
"ns": 10,
"title": "Template:R from modification"
},
{
"ns": 10,
"title": "Template:R to disambiguation page"
},
{
"ns": 14,
"title": "Category:Redirects from ambiguous terms"
},
{
"ns": 14,
"title": "Category:Redirects from other capitalisations"
}
],
"categories": [
{
"ns": 14,
"title": "Category:Redirects from ambiguous terms"
},
{
"ns": 14,
"title": "Category:Redirects from other capitalisations"
},
{
"ns": 14,
"title": "Category:Unprintworthy redirects"
}
]
},
{
"pageid": 14977970,
"ns": 0,
"title": "Ba'"
},
{
"pageid": 33351890,
"ns": 0,
"title": "Ba'Al Shem Tov"
}
]
}
}
Continuing queries
Queries will often have more results available than are just shown in the original query. (Often this is because a List query's result limit has been reached.) In these cases, queries can be continued. More detailed information on continuing queries can be at API:Continue .
Возможные предупреждения
Сообщение с предупреждением | Причина |
---|---|
No support for special pages has been implemented. | Thrown if a title in the Special: or Media: namespace is given. The pages in these namespaces cannot be queried. |
Раскрытие перенаправлений не может быть использовано вместе с параметром revids. Все перенаправления на точку revids не должны быть раскрыты. | Thrown if the redirect parameter is used in a query that specifies pages using revids .
|
История параметров
- v1.34: Introduced
exportschema
- v1.24: Введены
rawcontinue
(note: raw continuation was the default behavior until v1.26) - v1.21: Введены
continue
Дополнительная информация
- Указание заголовков через
titles
илиpageids
ограничено 50 заголовками на запрос или 500 для тех, у кого есть правоapihighlimits
. - Используйте несколько модулей запросов вместе, чтобы получить то, что вам нужно в одном запросе, например
prop=info|revisions&list=backlinks|embeddedin|allimages&meta=userinfo
. - Generators always pass page titles to the query module. Unlike lists (which may include additional data by default), generators should not output any information themselves, unless when explicitly requested via the generator module's query parameters.
Resolving redirects
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 from
and to
attributes and may contain a tofragment
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 an example request).
Redirect resolution cannot be used in combination with the revids=
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 redirects
parameter works.
Результат |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Main page",
"to": "Main Page"
}
],
"pages": [
{
"pageid": 15580374,
"ns": 0,
"title": "Main Page"
}
]
}
}
|
Результат |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 217225,
"ns": 0,
"title": "Main page"
}
]
}
}
|
Результат |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 217225,
"ns": 0,
"title": "Main page",
"contentmodel": "wikitext",
"pagelanguage": "en",
"pagelanguagehtmlcode": "en",
"pagelanguagedir": "ltr",
"touched": "2017-12-17T02:02:05Z",
"lastrevid": 777924062,
"length": 170,
"redirect": true
}
]
}
}
|
Результат |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Wikipedia:!--",
"to": "Wikipedia:Manual of Style",
"tofragment": "Invisible comments"
}
],
"pages": [
{
"pageid": 33697,
"ns": 4,
"title": "Wikipedia:Manual of Style"
}
]
}
}
|
Результат |
---|
{
"batchcomplete": true,
"query": {
"normalized": [
{
"fromencoded": false,
"from": "page1",
"to": "Page1"
}
],
"redirects": [
{
"from": "Page1",
"to": "Page2"
},
{
"from": "Page2",
"to": "Page3"
},
{
"from": "Page3",
"to": "Page1"
}
],
"pages": [
{
"ns": 0,
"title": "Page1",
"missing": true
}
]
}
}
|
См. также
- API:Главная страница - Краткое руководство по началу работы.
- API:Raw query continue - Содержит информацию о том, как использовать параметр
rawcontinue
.
- Maintained by MediaWiki Interfaces Team.
- Live chat (IRC): #mediawiki-core подключиться
- Issue tracker: Phabricator MediaWiki-Action-API (Report an issue)