2017-12-15 22 views
0

wiki에 대한 요청으로 MediaWiki API를 구동합니다. 나는 정상적인 페이지를 사용하는 경우Mediawiki API : 왜이 ​​쿼리는 페이지 맵이 아닌 배열을 반환합니까?

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

"Serval" 같은 응답이 같은 같습니다 : 나는 GET이 쿼리 문자열을 사용하고

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

이것은 내 프로그램이 무엇을 기대를하고, 내가 말할 수있는 한 API가 약속 한 것입니다.

내가 기대하는 invalid 페이지,하지만 난 기대하지 않는 것을
{ 
    "batchcomplete":"", 
    "query":{ 
     "pages":[ 
     { 
      "title":"", 
      "invalidreason":"The requested page title is empty or contains only the name of a namespace.", 
      "invalid":"" 
     }, 
     { 
      "pageid":1, 
      // info 
     } 
     ] 
    } 
} 

이 : 나는 제목 이상한 페이지의 종류를 사용할 때

는하지만, "|Main Page" 같은,이처럼 보이는 응답을 pages 요소가지도가 아닌 배열이고 페이지에 새로운 pageid 요소가있는 것입니다. 이 스위치를 트리거하는 페이지 목록은 많지 않지만 쿼리의 titles 요소에 일반 페이지를 추가 (또는 prepending)하면 예상대로 맵으로 다시 전환됩니다.

이 원인은 무엇입니까? 내 해결 방법 (알려진 좋은 페이지를 앞당기는 것)이 유일한 방법입니까?

감사합니다.

답변

1

formatversion=2을 사용하면 이와 같은 구조를 얻을 수 있습니다 (다른 것들도 변경합니다). 어쨌든 좋은 연습입니다.

+0

"그와 같은 구조"는지도 또는 배열을 의미합니까? – YourGamerMom

+0

'formatversion = 2'는 배열의 페이지를 반환 할 것이고 (또한'' "'대신'true'를 사용하고 결과를 좀 더 JSON-ish로 만드는 다른 작은 변경을 포함 할 수도 있습니다). – Tgr