एपीआई: पूछे जाने वाले प्रश्न

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page API:FAQ and the translation is 61% complete.

Outdated translations are marked like this.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Ido • ‎Limburgs • ‎Nederlands • ‎Tiếng Việt • ‎Türkçe • ‎bosanski • ‎català • ‎dansk • ‎español • ‎français • ‎hrvatski • ‎italiano • ‎kurdî • ‎occitan • ‎polski • ‎português • ‎português do Brasil • ‎sicilianu • ‎suomi • ‎svenska • ‎čeština • ‎беларуская (тарашкевіца)‎ • ‎български • ‎русский • ‎українська • ‎العربية • ‎فارسی • ‎हिन्दी • ‎অসমীয়া • ‎মেইতেই লোন্ • ‎ಕನ್ನಡ • ‎ไทย • ‎中文 • ‎日本語 • ‎粵語 • ‎한국어
इस पृष्ठ पर अभी भी काम किया जा रहा है

एपीआई:मुखपृष्ठ भी पढ़ें। यह कुछ अनुत्तरित सवालों के जवाब और अन्य उपयोगी पृष्ठों की ओर इशारा करता हैं।

Contents

कैसे ...

सहायता प्राप्त करें?

  1. अक्सर पूछे जाने वाले प्रश्न पढ़ें
  2. Special:MyLanguage/API:Main page। API प्रलेखन यहाँ में या स्व-दस्तावेज़ीकरण एपीआई मुख पृष्ठ पर अपने प्रश्न का उत्तर खोजने की कोशिश करें।
  3. यदि आप वेब पर अपने प्रश्न का उत्तर नहीं खोज पा रहे हैं,
  4. * विकिमीडिया खाता बनाएँ (यदि आपके पास पहले से कोई नहीं है) और API चर्चा पृष्ठ पर एक नया विषय जोड़ें।
    • Freenode नेटवर्क पर #mediawiki connect चैनल में IRC पर पूछें।

बग या सुविधा अनुरोध फ़ाइल करें?

यदि आपको एपीआई में एक बग मिला है या आपके पास एक सुविधा अनुरोध है, तो इसे फ़ैब्रिकेटर में रिपोर्ट करें। मौजूदा बग के लिए खोज पहले करें (कृपया डुप्लिकेट बग दर्ज न करें) और [[phab: tag / mediawiki-api] MediaWiki-API]] परियोजना के रूप में एपीआई के खिलाफ एक नए बग की रिपोर्ट दर्ज करें| यदि आप जिस कार्यक्षमता के लिए अनुरोध कर रहे हैं या किसी बग के विरुद्ध रिपोर्टिंग कर रहे हैं, उसे एक्सटेंशन द्वारा प्रस्तुत किया जाता है (जैसे AbuseFilter, FlaggedRevs), तो उस एक्सटेंशन का प्रोजेक्ट जोड़ें, उदाहरण के लिए "MediaWiki-extensions-AbuseFilter"।

पता लगाएँ कि किस कार्रवाई या सबमॉड्यूल को बुलाएँ

MediaWiki API बड़ा है, और एक्सटेंशन इसे और बढ़ाते हैं। कुछ सुझाव:

  • अगर आप किसी पृष्ठ के बारे में जानकारी प्राप्त करने का प्रयास कर रहे हैं, आप शायद prop= submodule​ का उपयोग करेंगे action=query। अन्य क्वेरी सबमॉड्यूल सूची पृष्ठों की और meta| मेटा - विकी के बारे में जानकारी लौटाती है। देखें सभी क्वेरी सबमॉड्यूल की जनरेट की गई API सहायता।
  • यदि आप एक विकी पृष्ठ को प्रारंभिक पृष्ठ लोड के बाद कुछ दिलचस्प करते हुए देखते हैं, तो यह पृष्ठ जरूर एपीआई अनुरोध कर रहा है।
    • अपने ब्राउज़र का डेवलपर कंसोल खोलें और उसके नेटवर्क अनुरोधों को api.php </ code> के लिए खोजें।
    • 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 ?uselang=qqx 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 i18n/en.json of core and extensions.
  • आप recursivesubmodules = 1 </ code>, [1 यहां यह] को जोड़कर एक पेज पर संपूर्ण विस्तारित उत्पन्न की गई API सहायता को देख सकते हैं।

ऊपर दी गई API help के लिंक अंग्रेजी विकिपीडिया पर जाते हैं। आपको विकी पर उत्पन्न API help को ब्राउज़ करना चाहिए जहां आप एपीआई अनुरोध कर रहे हैं, क्योंकि विभिन्न विकियों में अलग-अलग कॉन्फ़िगरेशन और एक्सटेंशन के विभिन्न सेट हैं।

एपीआई को कॉल करें?

api.php </ code> पर HTTP अनुरोध भेजें| उदाहरण के लिए, अंग्रेज़ी विकिपीडिया पर, URL https://en.wikipedia.org/w/api.php है|अधिकांश विकियों के समान URL पर api.php </ code> होता है: पृष्ठ क्रियाओं में index.php </ code> के स्थान पर api.php </ code> का उपयोग करें। 1.17 से, मीडियाविकि रियली सिंपल डिस्कवरी का समर्थन करता है; हर पेज के HTML स्रोत में RSD डिस्क्रिप्टर की ओर इशारा करते हुए RSD लिंक होता है जो यह दर्शाता है कि एपीआई को कहां खोजा जाए। यदि आप किसी तृतीय-पक्ष (गैर-विकिमीडिया-संचालित) विकी पर api.php का URL पता नहीं लगा पा रहें हैं, तो उसके मालिक से संपर्क करें। विकी मीडियाविकि API को सक्षम नहीं कर सकता, $wg EnableAPI देखें।

एपीआई के साथ परीक्षण करें?

  • Special: ApiSandbox का उपयोग करें
  • अपने ब्राउज़र के डेवलपर कंसोल को सक्षम करें और विकी के साथ बातचीत करते हुए api.php पर नैट अनुरोध पर ध्यान दें

आउटपुट स्वरूप को नियंत्रित करें?

क्वेरी स्ट्रिंग में &format=someformat पास करें। अधिक जानकारी के लिए आउटपुट प्रारूपों की सूची देखें।

जांचें कि क्या कोई एपीआई मॉड्यूल उपलब्ध है?

आप एपीआई मॉड्यूल और सबमॉड्यूल (जैसे query+geosearch) के बारे में जानकारी का अनुरोध करने के लिए action= paraminfo का उपयोग कर सकते हैं। प्रतिक्रिया में paraminfo.modules सरणी में प्रत्येक मॉड्यूल और सबमॉड्यूल के लिए एक path</ code> कुंजी होनी चाहिए, कुछ भी गायब मौजूद​ नहीं है।

यदि कोई API मॉड्यूल उपलब्ध नहीं है और आप जानते हैं कि कौन सा एक्सटेंशन इसे लागू करता है, तो आप यह जांच सकते हैं कि क्या उस एक्सटेंशन को siteinfo मेटा कोड से siprop=extension के लिए क्वेरी करके लोड किया गया है? लौटी सूची में इसका नाम देखें।

अगर एक मॉड्यूल उपलब्ध भी प्रतीत होता है, तो आपको हमेशा एपीआई त्रुटियों को संभालना होगा।

त्रुटियों/एरर का पता लगाएँ?

देखें त्रुटियां और चेतावनी

एपीआई से एक त्रुटि प्रतिक्रिया MediaWiki-API-Error HTTP हेडर सेट करेगी और error संरचना लौटाएगी। उदाहरण त्रुटि प्रतिक्रिया के लिए, https://en.wikipedia.org/w/api.php?action=blah पर जाएं।

एक पृष्ठ की सामग्री (विकिटेक्स्ट) प्राप्त करें?

यदि आप किसी भी अन्य जानकारी के बिना raw wikitext चाहते हैं, तो यह index.php की action=raw mode का उपयोग करेगा नाकि API: https://en.wikipedia.org/w/index.php?action=raw&title=Main_Page। ध्यान दें कि यह बिना किसी स्वरूपण के सादे wikitext का उत्पादन करेगा। action=raw documentation भी देखें।

पृष्ठ और उसके नवीनतम संस्करण के बारे में अधिक जानकारी प्राप्त करने के लिए, API:https://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Main_Page का उपयोग करें। prop=revisions module के प्रलेखन भी देखें।

आप प्रति एपीआई अनुरोध में 50 पृष्ठों को पुनः प्राप्त कर सकते हैं API request:https://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles=Main_Page%7CArticles के साथ​। यह जनरेटर के साथ भी काम करता है।

पृष्ठ (HTML) की सामग्री प्राप्त करें?

यदि आप केवल HTML चाहते हैं, तो API:https://en.wikipedia.org/wiki/Main_Page?action=render के बजाय index.php के action=render मोड का उपयोग करना सबसे अच्छा है। 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 ?action=render this returns a complete HTML document (i.e. <html><head>various metadata</head><body>...</body></html>); you could use an HTML parsing library to get the inner HTML of the <body> tag (see the documentation).

पार्स समय (लिंक, श्रेणियां, अनुभाग, आदि) पर विकिटेक्स्ट से अधिक जानकारी प्राप्त करने के लिए, आप कर सकते हैं:

2015 के एपीआई परिवर्तनों से निपटें?

डिफ़ॉल्ट निरंतरता व्यवहार मीडियाविकि 1.26 में बदल गया। यदि आप API प्रतिक्रिया से जारी जानकारी के आधार पर अतिरिक्त डेटा का अनुरोध करते हैं, तो आपको अपना कोड अपडेट/अद्यतन करना होगा । Either

Also, since MediaWiki 1.25 an improved output structure for JSON and PHP formats has been available if you add formatversion=2 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 are willing to risk needing to make future changes to adapt, it's much nicer to process API results with formatversion=2.

क्यों ...

मुझे HTTP 403 त्रुटियाँ हैं?

This could mean you are not passing a User-Agent HTTP header or that your User-Agent is empty or blacklisted m:User-Agent policy. See API:Client code for more information. Also, it could mean that you are passing & in the query string of a GET request: Wikimedia blocks all such requests, use POST for them instead.

do I get the readapidenied error?

The wiki you are 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 API:Login for more information. It's not currently possible to query the contents of whitelisted pages without logging in, even though they are available in the regular user interface.

do I get badtoken errors?

This is usually because you are either not passing a token at all (read about tokens in the documentation of the module you are using) or because you are having trouble staying logged in. It's also possible you are reusing a type of token that can't be reused (see module documentation for details) or that you are 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.

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 are having trouble staying logged in.

do I get mustposttoken error?

The action you are attempting must be requested using HTTP POST. You probably clicked on api.php 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 -F 'action=delete' -F 'token=hexadecimal stuff+\' and the necessary browser cookies with -H 'Cookie:your session cookies'. 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.

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 Expect: 100-continue 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 --header 'Expect:').

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)