API:FAQ/de

Lesen Sie auch die Kurzanleitung. Sie beantwortet ein paar Fragen, die hier nicht beantwortet werden und verweist auf andere nützliche Seiten.

Hilfe bekommen?

 * 1) Lies diese HGF
 * 2) Versuche die Antwort auf deine Frage in der API-Dokumentation oder der automatisch generierten API-Seite zu finden.
 * 3) Wenn du die Antwort auf deine Frage nicht im Web findest,
 * 4) * kannst du deine Frage im Mediawiki-API-Verteiler stellen.
 * 5) * Erstellen Sie ein Wikimedia-Account (wenn Sie noch keinen besitzen) und fügen Sie ein neues Thema zur API-Diskussionsseite hinzu.
 * 6) * Fragen Sie im IRC im $MediaWiki Kanal im Freenode-Netzwerk.

einen Fehler (Bug) oder ein Merkmal (Feature) einreichen?
Wenn Sie einen Bug in der API gefunden haben oder eine ein Feature anfragen wollen, melden Sie dies in Phabricator.Suchen Sie erst nach existierenden Bugs (bitte doppeln Sie keine Fehler) und geben Sie die MediaWiki-API als Projekt an, wenn Sie einen neuen Bug der API melden. Wenn die Funktion, die Sie anfordern, oder der Bug, den Sie melden, Teil einer Erweiterung ist (z.B. AbuseFilter, FlaggedRevs), fügen Sie das Projekt der Erweiterung an, z.B. "MediaWiki-extensions-AbuseFilter".

herausfinden, welche Aktion oder welches Untermodul aufgerufen werden soll?
Die MediaWiki-API ist groß und Erweiterungen vergrößern sie noch weiter. Einige Empfehlungen:


 * Wenn Sie versuchen, Informationen über eine Seite zu erhalten, verwenden Sie wahrscheinlich ein prop=-Submodul von . Andere Anfrage-Submodule geben Listen von Seiten und MetaInformationen über das Wiki zurück. [ Zeigen Sie] die generierte API-Hilfe aller Abfrage-Submodule an.
 * Wenn Sie feststellen, dass eine Wiki-Seite nach dem ersten Laden etwas Interessantes tut, wird sie eine API-Anfrage stellen.
 * Öffnen Sie die Entwicklerkonsole ihres Browsers und suchen Sie nach der Netzwerkanfrage an.
 * All the code running on Wikimedia wikis is open source, so you can read the source code making API requests. One strategy to locate source code is to append  to the wiki page URL to see the message keys near where API results are presented, then you can search for this message key in the localized message files   of core and extensions.
 * Sie können die gesamte erweiterte generierte API-Hilfe auf einer Seite anzeigen, indem Sie  anhängen, [ hier ist es.

The links to generated API help above go to English Wikipedia You should browse the generated API help on the wiki where you'll be making API requests, since different wikis have different configurations and different sets of extensions.

die API aufrufen?
Send HTTP requests to  For example, on the English Wikipedia, the URL is https://en.wikipedia.org/w/api.php. Most wikis have  at a similar URL: just use   in place of    in page actions. From 1.17 onwards, MediaWiki supports Really Simple Discovery; the HTML source of every page has an RSD link pointing to an RSD descriptor which indicates where to find the API. If you can't figure out the URL of api.php on a third-party (non-Wikimedia-operated) wiki, contact its owner. The wiki may not enable the MediaWiki API, see.

To play with the API


 * use Special:ApiSandbox
 * enable your browser's developer console and watch net requests to  as you interact with the wiki

das Ausgabeformat kontrollieren?
Pass  in the query string. See the list of output formats for more information. Note that effort is underway to remove all output formats except JSON, so try to use JSON whenever possible.

check if an API module is available?
You can use  to request information about the API modules and submodules (such as  ) that you want to invoke. The  array in the response must contain a   key for each module and submodule, anything missing is not available.

If an API module isn't available and you know which extension implements it, you can check if that extension is loaded by querying the siteinfo meta information for  and look for its name in the returned list.

Even if a module appears to be available, you must always handle API errors.

Fehler entdecken?
Siehe Fehler und Warnungen.

An error response from the API will set the  HTTP header and return an   structure. For an example error response, visit https://en.wikipedia.org/w/api.php?action=blah.

den Inhalt einer Seite erhalten (Wikitext)?
If you just want the raw wikitext without any other information whatsoever, it's best to use index.php's action=raw mode instead of the API: https://en.wikipedia.org/w/index.php?action=raw&title=Main_Page. Note that this will output plain wikitext without any formatting. See also the action=raw documentation

To get more information about the page and its latest version, use the API: https://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Main_Page. See also the documentation for the prop=revisions module.

You can retrieve 50 pages per API request: https://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles=Main_Page|Articles. This also works with generators.

den Inhalt einer Seite erhalten (HTML)?
If you just want the HTML, it's best to use index.php's  mode instead of the API: https://en.wikipedia.org/wiki/Main_Page?action=render. See the action=render documentation.

With the advent of RESTBase, on Wikimedia wikis you can instead request the cached HTML of a page, for example https://rest.wikimedia.org/en.wikipedia.org/v1/page/html/Main_Page (for performance this is also available at https://en.wikipedia.org/api/rest_v1/page/html/Main_Page to reuse an existing network connection to the wiki). Unlike  this returns a complete HTML document (i.e.   various metadata  ...  ); you could use an HTML parsing library to get the inner HTML of the   tag (see the documentation).

To get more information distilled from the wikitext at parse time (links, categories, sections, etc.), you can:


 * Query the property submodules that provide the information you need (links, categories, etc.).
 * Use the  API module:

wie mit den Änderungen von 2015 an der API umgehen?
The default continuation behavior changed in MediaWiki 1.26. If you request additional data based on continue information from an API response, you must update your code. Either
 * add  to your API requests to continue to get the confusing old query-continue behavior
 * or add  to your API requests and update to the cleaner continue processing that has been available since MediaWiki 1.21.

Also, since MediaWiki 1.25 an improved output structure for JSON and PHP formats has been available if you add   to your requests. As of July 2015, this is still considered experimental because a few API modules may get further improvements in this mode. If you're willing to risk needing to make future changes to adapt, it's much nicer to process API results with.

bekomme ich HTTP 403 Fehler?
This could mean you're not passing a  HTTP header or that your   is empty or blacklisted User-Agent policy. See the quick start guide for more information. Also, it could mean that you're passing  in the query string of a GET request: Wikimedia blocks all such requests, use POST for them instead.

bekomme ich den Lese-API-Verweigerungs-Fehler? (readapidenied error)
The wiki you're querying contains private content and requires users to log in in order to be able to read all pages. This means that a client needs to be logged in to query any information at all through the API. See the quick start guide for more information. It's not currently possible to query the contents of whitelisted pages without logging in, even though they're available in the regular user interface.

bekomme ich schlechte Token-Fehler?
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 (see API:Tokens) and try again before giving up.

bekomme ich Warnungen anstelle von Tokens (Aktion 'Bearbeiten' ist nicht für den aktuellen Benutzer erlaubt)?
You either don't have the right to execute the action you requested, or you're having trouble staying logged in.

do I get mustposttoken error?
The action you're attempting must be requested using HTTP POST. You probably clicked on  URL in a browser or modified an existing URL in the browser's location field, but that results in an HTTP GET request. You have to use a library (such as the mediawiki.api ResourceLoader module) or utility that can make POST requests; usually you also have to provide it your session cookies and an API:token so MediaWiki can verify that you are the logged-in user with rights to perform the action. As a hack, you might be able to use the cURL command-line utility, providing it each API parameter with  and the necessary browser cookies with. The Network panel of the browser developer tools window (Ctrl+Shift+I) in Firefox and chromium has a "Copy as cURL" menu item that can help, but it's still fiddly.

Depending on what you want to do it's easier to learn how to use a bot or library that handles the details of login, cookies, and tokens for you.

steht X nicht über die API zur Verfügung?
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.

gibt mein API-Aufruf auf Wikimedia Wikis nur ein HTML-Fehler zurück?
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 ).

funktionieren lange API-URLs wirklich nicht?
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)