API:Запит
Ця сторінка є частиною документації по MediaWiki Action API. |
Модуль action=query
дозволяє отримувати інформацію про вікі та дані, що зберігаються в ній, наприклад, вікітекст певної сторінки, посилання та категорії набору сторінок або маркер, необхідний для зміни вмісту вікі .
Документація API
Модулі запитів
Модуль запиту (query module) має три типи підмодулів (їх також називають модулями запитів):
- Метаінформація про вікі та зареєстрованого користувача.
- Властивості сторінок, включаючи версії та вміст сторінок.
- Списки сторінок, які відповідають певним критеріям.
Приклади
Приклад 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 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"
}
]
}
}
Приклад 5: Завершення пакету
API повертає елемент batchcomplete
, щоб вказати, що повернуто всі дані для поточної порції елементів.
MW 1.25+
У відповідь на приклад запиту нижче було включено batchcomplete
, щоб вказати, що всі дані для кожного з трьох зображень були повернуті.
Наступне продовження почне повертати дані для наступного набору з трьох зображень.
Запит 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 .
Можливі попередження
Попереджувальне повідомлення | Причина |
---|---|
Підтримка спеціальних сторінок не реалізована. | Відкидається, якщо вказано назву в просторі назв Special: або Media:. Сторінки в цих просторах назв не можна запитувати. |
Вирішення перенаправлень не може використовуватись разом з параметром revids. Усі перенаправлення, на які вказує revids, не було вирішено. | Відкидається, якщо параметр redirect використовується у запиті, який визначає сторінки, що використовують revids .
|
Історія параметра
- v1.34: Introduced
exportschema
- v1.24: Уведено
rawcontinue
(зауважте, що необроблене продовження було поведінкою за замовчуванням до 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.
Вирішення перенаправлень
Перенаправлення можна вирішити автоматично, так, що ціль перенаправлення повертається замість заданої назви.
Якщо перенаправлення є, вони завжди будуть містити атрибути from
і to
і можуть містити атрибут tofragment
для тих перенаправлень, які вказують на конкретні розділи.
Може мати місце як нормалізація, так і перенаправлення.
У разі кількох перенаправлень всі перенаправлення будуть вирішені, а у випадку кругового перенаправлення в розділі 'pages' (сторінки) може не бути сторінки (див. також нижче).
Дозвіл перенаправлення не можна використовувати в поєднанні з параметром revids=
або з генератором, що генерує ідентифікатори версій (revids); виконавши це, ви отримаєте попередження і не вирішите перенаправлення для зазначених revids.
У наведених нижче прикладах показано, як працює параметр redirects
.
Результат |
---|
{
"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 connect
- Issue tracker: Phabricator MediaWiki-Action-API (Report an issue)