【问题标题】:Mediawiki API: Why does this query return an array rather than a map of pages?Mediawiki API:为什么这个查询返回一个数组而不是一个页面地图?
【发布时间】:2017-12-15 22:33:33
【问题描述】:

我正在向为我的 MediaWiki API 提供支持的 wiki 发出请求。我将此查询字符串用于 GET:

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

当我使用普通页面时,例如"Serval",响应看起来像这样:

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

这是我的程序所期望的,据我所知,这也是 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 元素会导致它切换回地图,就像我期望的那样。

这是什么原因造成的?我的解决方法(添加一个已知良好的页面)是唯一的方法吗?

谢谢。

【问题讨论】:

    标签: json http mediawiki mediawiki-api


    【解决方案1】:

    你可以使用formatversion=2 来得到这样的结构(也改变了一些其他的东西);无论如何,这是一个好习惯。

    【讨论】:

    • “这样的结构”是指地图还是数组?
    • formatversion=2 将返回数组中的页面(并且还使用 true 而不是 "" 并且可能包括其他小的更改,使结果更接近 JSON)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多