2017-12-15 12 views
0

私はMediaWiki APIを使用してwikiにリクエストしています。 I GETのために、このクエリ文字列を使用しています:Mediawiki API:なぜこのクエリはページのマップではなく配列を返しますか?

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

これは私のプログラムが期待するものである、と私は"Serval"のような通常のページを使用する場合、応答は次のようになります

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

私はそれがAPIが約束しているものだと私が言うことができる限り。

しかし、私はタイトルのために奇妙なページの種類を使用し、"|Main Page"のように、私はこのようになります応答を得る:

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

私は期待しinvalidページを、しかし、私が期待していないことですpages要素がマップではなく配列であり、ページに新しいpageid要素があることを確認してください。私はこのスイッチを引き起こすページの網羅的なリストを持っていませんが、クエリ内のtitles要素に通常のページを追加(またはプリペア)すると、期待通りにマップに戻ることができると言えます。

この原因は何ですか?私の回避策は(唯一の良いページの前に)唯一の方法ですか?

ありがとうございました。

答えて

1

formatversion=2を使用すると、常にそのような構造を得ることができます(他のものも変更します)。それはとにかく良い練習です。

+0

「地図のような構造」とは、地図や配列のことですか? – YourGamerMom

+0

'formatversion = 2'は配列内のページを返します(また、' '' 'の代わりに' 'true''を使用します)。 – Tgr

関連する問題