API:FAQ/ru

Внимание: эта страница находится в стадии разработки

Также прочтите краткое руководство пользователя. Оно отвечает на некоторые вопросы, на которые здесь не ответили, и направляет на другие полезные страницы.

получить помощь?

 * 1) Прочтите этот FAQ
 * 2) Попробуйте найти ответ на свой вопрос в API документации здесь или на самодокументированная API страница
 * 3) Если Вы не можете найти ответ на свой вопрос в интернете, Вы можете задать свой вопрос на mediawiki api почтовый список рассылки.
 * 4) Задайте вопрос в IRC в канале #mediawiki в сети Freenode.

отправить отчёт об ошибке или запрос на введение возможности?
Если вы нашли ошибку в API или хотите запросить введение новой возможности, вы можете сообщить об этом на Phabricator. Сначала произведите поиск по существующим ошибкам (пожалуйста, не отправляйте дублирующие сообщения об ошибках), выберите продукт «MediaWiki» и компонент «API», когда сообщаете об ошибке в API. Если функция, которую вы запрашиваете, или об ошибке в которой вы пишете сообщение, введена расширением (например, AbuseFilter, FlaggedRevs), отправьте сообщение о ней в компоненте того расширения с продуктом «MediaWiki extensions».

вызвать API?
API вызываетя отправкой HTTP-запросов к api.php. Например, на английской Википедии URL — http://en.wikipedia.org/w/api.php; у других вики api.php расположен с похожим URL: просто используйте api.php, где у обычного URL index.php. Если вы пытаетесь получить доступ к API на оперируемой не Викимедиа вики и не можете найти URL api.php, обратитесь к владельцу вики.

From 1.17 onwards, MediaWiki supports RSD. An RSD marker is present on every page pointing to an RSD descriptor which indicates where to find the API.

контролировать выходной формат?
Передайте  в строке запроса. См. список форматов вывода для большей информации. Обратите внимание, что в процессе удаление всех форматов, кроме JSON, так что старайтесь использовать JSON всегда, когда это возможно.

обнаружить ошибки?
Ошибочный ответ от API задаст заголовок HTTP  и возвратит. Для примера ответа с ошибкой см. http://en.wikipedia.org/w/api.php?action=blah. См. также документацию об ошибках и предупреждениях.

получить содержимое страницы (wikitext)?
Если вы просто хотите чистый викитекст без какой-либо другой информации, лучше всего использовать режим action=raw index.php вместо API: http://en.wikipedia.org/w/index.php?action=raw&title=Main_Page. Обратите внимание, что это выведет необработанный викитекст без какого-либо форматирования. См. также документацию action=raw.

Чтобы получить больше информации о странице и о последней версии, используйте API: http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Main_Page. См. также документацию к модулю prop=revisions.

Вы можете получить до 50 страниц за запрос к API: http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles=Main_Page|Articles. Это работает также с генераторами.

получить содержимое страницы (HTML)?
Если вы хотите только HTML, лучше использовать режим action=render index.php вместо API: http://en.wikipedia.org/w/index.php?action=render&title=Main_Page. См. также документацию action=render.

Чтобы получить информацию, получаемую из викитекста во время парсинга (ссылки, категории, разделы и т. д.), используйте модуль API parse: http://en.wikipedia.org/w/api.php?action=parse&page=Main_Page. См. также документацию к модулю action=parse.

я получаю HTTP 403 ошибки?
Это может означать, что вы не указываете заголовок HTTP, или что ваш   пуст или внесён в чёрный список (User-Agent policy). См. справку для большей информации. Также это может означать, что вы указываете  в строке GET-запроса: Викимедиа блокирует все такие запросы, используйте для них POST.

я получаю readapidenied ошибку?
Вики, к которой вы обращаетесь, содержит необщедоступное содержимое и требует, чтобы участники вошли в учётную запись, чтобы они могли читать все страницы. Это означает, что клиенту требуется войти в учётную запись, чтобы запросить какую-либо информацию через API. Для большей информации см. руководство по быстрому старту.

я получаю badtoken ошибки?
This is usually because you're either not passing a token at all (read about tokens in the documentation of the module you're using) or because you're having trouble staying logged in. It's also possible you're reusing a type of token that can't be reused (see module documentation for details) or that you're using a token that's associated with an expired session. In general, when using cached tokens, refetch the token (generally using action=tokens) and try again before giving up.

do I get warnings instead of tokens (Action 'edit' is not allowed for the current user)?
You either don't have the right to execute the action you requested, or you're having trouble staying logged in.

is X not available through the API?
Not all features available in the user interface are available through the API. Such features weren't implemented either because no one has gotten around to it yet or because no one has requested them. For information about filing feature requests, see above.

does my API call on Wikimedia wikis just return an HTML error?
If you use API calls with POST requests make sure that these requests don't use Content-Type: multipart/form-data. This happens for instance if you use CURL to access the API and you pass your POST parameters as an array. The Squid proxy servers which are used at frontend servers at the Wikimedia wiki farm don't handle that correctly, thus an error is returned.

Instead, use the "value1=key1&value2=key2..." notation to pass the parameters as a string, similar to GET requests.

On other wikis which you access directly it doesn't make a difference.

In addition, some software (such as cURL) send an  header for longer POST requests (>1024 bytes). The wikimedia wikis that go through Squid servers can't cope with this. If you are still getting HTML errors with post requests, and are not logged in, try setting a blank Expect header (e.g. using cURL on the command line, use the option ).

do really long API urls not work?
There is a maximum limit of the url size that can be used with the API when making GET requests. This limit varies depending on the website. Wikimedia's limit is roughly around 8100 characters. To get around this limit use POST requests instead (you may also need to set the Expect header, as described above)