2017-12-15 5 views
0

Ich mache Anfragen an eine powered meine MediaWiki API. Ich verwende diese Abfrage-String für eine GET:Mediawiki-API: Warum gibt diese Abfrage ein Array und keine Sitemap zurück?

action=query&format=json&prop=images|info&inprop=url&titles=<titles> 

Wenn ich eine normale Seite zu nutzen, wie "Serval", die Antwort so etwas wie folgt aussieht:

{ 
    "batchcomplete":"", 
    "query":{ 
     "pages":{ 
     "34":{ 
      // page info 
     } 
     } 
    } 
} 

Dies ist, was mein Programm erwartet, und Soweit ich das beurteilen kann, ist es das, was die API verspricht.

Aber wenn ich eine Art seltsame Seite für den Titel verwenden, wie "|Main Page", erhalte ich eine Antwort, die wie folgt aussieht:

{ 
    "batchcomplete":"", 
    "query":{ 
     "pages":[ 
     { 
      "title":"", 
      "invalidreason":"The requested page title is empty or contains only the name of a namespace.", 
      "invalid":"" 
     }, 
     { 
      "pageid":1, 
      // info 
     } 
     ] 
    } 
} 

Die invalid Seite erwarte ich, aber was ich nicht erwarte, ist dass das Element pages ein Array und keine Karte ist und dass die Seite ein neues pageid Element enthält. Ich habe keine erschöpfende Liste von Seiten, die diesen Schalter auslösen, aber ich kann sagen, dass das Anfügen (oder Voranstellen) einer regulären Seite an das Element in der Abfrage bewirkt, dass es wie erwartet auf eine Karte zurückwechselt.

Was verursacht das? Ist meine Problemumgehung der einzige Weg, eine bekannte gute Seite voranzutreiben?

Danke.

Antwort

1

Sie können formatversion=2 verwenden, um immer eine Struktur wie das zu bekommen (ändert einige andere Sachen auch); es ist sowieso eine gute Übung.

+0

von "eine solche Struktur" meinst du die Karte oder das Array? – YourGamerMom

+0

'formatversion = 2' wird Seiten in einem Array zurückgeben (und auch' true' anstatt '' '' verwenden und möglicherweise andere kleine Änderungen enthalten, die das Ergebnis mehr JSON-ish machen). – Tgr

Verwandte Themen