User:DarkSTALKER/API:Edit
{{API Intro}}
| MediaWiki version: | 1.13 |
Contents |
[edit] Требования
- Версия MediaWiki 1.13.3 или выше.
- Включенные опции $wgEnableAPI и $wgEnableWriteAPI.
[edit] Токен
Для редактирования страницы требуется специальный токен (edit token), действительный для всех страниц, но только во время текущей сессии. Если вы хотите защититься от конфликта правок, то кроме того вам необходимо узнать время последние проверки. Вы можете осуществить это с помощью следующего запроса:
Получение токена
<?xml version="1.0" encoding="utf-8"?> <api> <query> <pages> <page pageid="15580374" ns="0" title="Main Page" touched="2008-03-27T21:15:39Z" lastrevid="199631190" counter="0" length="4712" edittoken="000000000000000000+\"> <revisions> <rev revid="199631190" user="David Levy" timestamp="2008-03-20T17:26:39Z" comment="Have you tested it in every major browser at every resolution." /> </revisions> </page> </pages> </query> </api>
[edit] Редактирование
Страницы могут создаваться и редактироваться с помощью action=edit. Pages can be edited and created with action=edit.
[edit] Параметры
title: Название страницы для редактированияsection: Номер секции для редактирования. Используйте0для редактирования верхней секции иnewдля создания новой.text: Содержимое новой страницы или секции.token: Edit tokensummary: Описание правки.- Когда используется
section=newзначение будет использоваться в качестве заголовка новой секции.
- Когда используется
minor: Еслиtrue, тогда правка будет помечена как незначительная.notminor: Еслиtrue</cdoe>, тогда правка не будет помечена как незначительная, даже если установлен параметр «отмечать все правки как незначительные».bot: Еслиtrue, то помечает как правку ботом, даже, если правка совершена учётной записи без флага «бот».basetimestamp: Время последней версии, чтобы избежать конфликта правок.starttimestamp: Время получения токена.recreate: Еслиtrue, то подавляет ошибку о том, что страница была удалена.createonly: Еслиtrue, то выдает ошибку, если страница существует.nocreate: Еслиtrue, то выдает ошибкуmissingtitle, если страница существует.watchlist: Установка настроек списка наблюдения для страницы:watch: добавить страницу в список наблюдения;unwatch: удалить страницу из списка наблюдения;preferences: использовать настройки по умолчанию;nochange: не изменять список наблюдения.
md5: Хэш MD5 параметраtext. Если хэши не совпадают, тогда правка отклоняется. Параметр может использоваться для защиты от повреждения данных.captchaid: CAPTCHA ID из предыдущего запроса.captchaword: Ответ на CAPTCHA.undo: ID версии для отмены. Переопределяетtext,prependtextиappendtextundoafter: Отменяет в все правки отundoдо установленного ID. Если не установлено, то отменяет только одну правку.
[edit] Примеры
Примечание: В этом примере все параметры для простоты передаются GET-запросом. Однако, action=edit рекомендуется использовать POST-запросы; GET-запрос вызовет ошибку. Не забывайте указывать Content-Type: application/x-www-form-urlencoded в заголовке запроса. Полученный токен оканчивается +\, это требуется для преобразования заголовка в URL. Добавления новой секции в en:Talk:Main Page
<?xml version="1.0" encoding="utf-8"?> <api> <edit result="Success" pageid="12" title="Talk:Main Page" oldrevid="465" newrevid="471" /> </api>
[edit] CAPTCHAs и ошибки расширений
Если правка требует CAPTCHA, то вы получите что-то вроде:
<?xml version="1.0" encoding="utf-8"?> <api> <edit result="Failure"> <captcha type="math" mime="text/tex" id="509895952" question="36 + 4 = " /> </edit> </api>
In most cases, you won't get a math CAPTCHA, but a URL to an image (in the url field). When you've solved the CAPTCHA, retry the request (in this case with captchaid=509895952&captchaword=40).
Other extensions that use the APIEditBeforeSave hook may return errors using either the format described above or the usual error format.
[edit] Possible errors
In addition to the usual stuff:
- code: notitle
- info: The title parameter must be set
- code: notext
- info: One of the text, appendtext, prependtext and undo parameters must be set
- code: notoken
- info: The token parameter must be set
- code: invalidsection
- info: The section parameter must be set to an integer or 'new'
- code: protectedtitle
- info: This title has been protected from creation
- code: cantcreate
- info: You don't have permission to create new pages
- code: cantcreate-anon
- info: Anonymous users can't create new pages
- code: articleexists
- info: The article you tried to create has been created already
- code: noimageredirect-anon
- info: Anonymous users can't create image redirects
- code: noimageredirect
- info: You don't have permission to create image redirects
- code: spamdetected
- info: Your edit was refused because it contained a spam fragment: ``wikitext''
- code: filtered
- info: The filter callback function refused your edit
- code: contenttoobig
- info: The content you supplied exceeds the article size limit of bytes bytes
- code: noedit-anon
- info: Anonymous users can't edit pages
- code: noedit
- info: You don't have permission to edit pages
- code: pagedeleted
- info: The page has been deleted since you fetched its timestamp
- code: emptypage
- info: Creating new, empty pages is not allowed
- code: emptynewsection
- info: Creating empty new sections is not possible.
- code: editconflict
- info: Edit conflict detected
- code: revwrongpage
- info: rrevid is not a revision of ``pagename''
- Thrown if an invalid revid is given for
undoorundoafter
- Thrown if an invalid revid is given for
- info: rrevid is not a revision of ``pagename''
- code: undo-failure
- info: Undo failed due to conflicting intermediate edits