This page is a translated version of the page API:Tutorial and the translation is 59% complete.

Bu eğitimde, MediaWiki Eylem API'si, nasıl kullanılacağı, istek biçimi, basit bir sorgu ve Eylem API kullanan proje örnekleri hakkında bilgi edineceksiniz.

MediaWiki Eylem API'sine genel bakış

MediaWiki Eylem API'si, kullanıcıların aşağıdaki gibi belirli sayfa oluşturma, kimlik doğrulama, ayrıştırma, arama vb. viki eylemlerini gerçekleştirmesine olanak tanıyan bir REST'li web hizmetidir. API:Anasayfa , API'yi anlamak için iyi bir başlangıç noktasıdır.

Programınız, viki özelliklerine erişim elde etmek için API'ye istek gönderir. Örneğin, bir vikide oturum açın, bir sayfa oluşturun ve düzenleyin, bir başlık arayın, içerik metni arayın veya içeriği ayrıştırın. Eylem API, üçüncü taraf geliştiriciler, Wikimedia uzantı geliştiricileri ve wiki sitesi yöneticileri tarafından kullanılabilir.

Bu sayfanın sağ yan çubuğunda, kategorilerle gruplanan ve API tarafından desteklenen birçok özellik vardır. Bir wiki sunucusuna istek göndermeden önce, veri biçimleri, hatalar ve uyarılar ve Eylem API'sı için SSS vb. genel bakış sayfalarını okuyunuz.

MediaWiki Eylem API'si nasıl kullanılır

w:Hypertext_Transfer_Protocol 9:1TP üzerinden kullanıcıdan sunucuya veri talep edebilir ve cevapları standart bir biçimde (genellikle w:JSON 9:1JSON olarak) alabilirsiniz. Bir talep, bitiş noktası ve bir dizi parametreden oluşur. Yapılabilecek iki tür talep vardır: w:Hypertext_Transfer_Protocol#Request_methods ve w:POST_ (HTTP) ⁇ POST. For a GET request, a parameter would contain a query string in the URL. For a POST request, format the parameters in JSON format.

İstek biçimi

All Wikimedia Wikis have endpoints in this format http://example.org/w/api.php. To operate on the MediaWiki main site or English Wikipedia, use the related endpoint. For example, the English Wikipedia is at https://en.wikipedia.org/w/api.php. For testing new accounts or test edits to pages, use the test wiki endpoint https://test.wikipedia.org/w/api.php.

In the query string in the URL, add the action parameter. It tells the API which action to perform. The most popular action is query (the URL would contain action=query), which allows fetching data from a wiki. Following the action parameter, add another parameter to indicate which one of the three query module types you want to perform:

  • prop - get properties of pages  
  • list - get list of pages matching a certain criterion
  • meta - get meta information about the wiki and user

Finally, include the format parameter, which tells the API in which format to get the results. The recommended format is JSON. The API has supported other output formats in the past, but they are not generally recommended.

 
Request format

Basit bir sorgu

GET'in tipik bir istek ve cevabının Action API bağlamına nasıl görüneceğini anlamak için basit bir sorunun örneğini alalım.

Bir wiki'de bir başlık arayalım. API:Search 'de belgelenmiş olan search modülünü kullanacağız.

GET isteği

To search for page titles or content matching Craig Noone, the URL for the HTTP GET request would be:

URL'nin her bir kısmının açıklaması:

  • http://en.wikipedia.org/w/api.php ana bitiriş noktasıdır. Bu durumda İngilizce Wikipedia.
  • action=query, wiki'den veri almak anlamına gelir.
  • list=search bir kriterle eşleşen sayfaların listesini elde etmek anlamına gelir.
  • srsearch=Craig%20Noone arama yapılacak sayfa başlığını veya içeriğini ifade eder. %20 bir URL'de bir boşluk karakterini ifade eder.
  • format=json önerilen çıktı biçimi olan JSON çıktısını gösterir.

Yanıt

Cevap, "Craig Noone" ile eşleşen sayfa başlıklarının bir listesi olan JSON biçimindeki bir belgedir.

{
    "batchcomplete": "",
    "continue": {
        "sroffset": 10,
        "continue": "-||"
    },
    "query": {
        "searchinfo": {
            "totalhits": 210
        },
        "search": [
            {
                "ns": 0,
                "title": "Craig Noone",
                "pageid": 18846922,
                "size": 22548,
                "wordcount": 1771,
                "snippet": "<span class=\"searchmatch\">Craig</span> Stephen <span class=\"searchmatch\">Noone</span> (born 17 November 1987) is an English professional footballer who plays as a winger for Bolton Wanderers. Born in Kirkby, he has also",
                "timestamp": "2018-11-02T22:25:45Z"
            },
            {
                "ns": 0,
                "title": "Noone",
                "pageid": 32906333,
                "size": 553,
                "wordcount": 64,
                "snippet": "<span class=\"searchmatch\">Noone</span> is a surname that may refer to:  <span class=\"searchmatch\">Craig</span> <span class=\"searchmatch\">Noone</span> (born 1987), English football midfielder Jimmie <span class=\"searchmatch\">Noone</span> (1895–1944), American jazz clarinetist Kathleen",
                "timestamp": "2015-08-16T05:16:17Z"
            }
            ...
        ]
    }
}


Eylem API'sı kullanan proje örnekleri

Some example of projects in Wikimedia that use Action API:

  • Wikipedia iOS App, in which one of the features is to search for wiki pages near your location.
  • Bots that operate on a wiki. Pywikibot is a bot framework written in Python that interfaces with MediaWiki API which a lot of bot developers use.
  • API use in visualizing data obtained from a wiki. Such as this neat visualization that shows real time edits made on Wikipedia.

Ek notlar

  • Several sites are using MediaWiki. They might all be running a different version of MediaWiki and in turn the API. Some module parameters supported in one version might be deprecated or removed in others. You could learn about that in each module's documentation via API help module.
  • If you want to make a lot of API calls, and perhaps run very busy and active bots, talk to wiki admins ahead of time, so they do not block you. See list of Administrators of Wikimedia projects. Read more about this topic on API:Etiquette .
  • All data modifying actions such as logging, editing or moving a page, and watching or patrolling changes would require tokens. You would need to obtain tokens via API:Tokens to proceed further.

Kaynaklar