2016-11-13 18 views
2

当调用维基百科API时,链接对象中的键是什么意思?Wikipedia API响应中的参数意味着什么?

  • 我想ns代表命名空间,但为什么它是一个整数?
  • 为什么exists为每个对象都为空?
  • 为什么看起来是名为*的页面名称标题键?

例如,调用:

https://en.wikipedia.org/w/api.php?action=parse&page=List_of_cognitive_biases&prop=links 

响应:

{ 
    "parse": { 
     "title": "List of cognitive biases", 
     "pageid": 510791, 
     "links": [{ 
      "ns": 0, 
      "exists": "", 
      "*": "Anthropomorphism" 
     }, { 
      "ns": 0, 
      "exists": "", 
      "*": "Apophenia" 
     }, 
     ... 
     ] 
    } 
} 
+2

你会得到与[formatversion理智的输出= 2](https://en.wikipedia.org/w/api.php?action=parse&page=List_of_cognitive_biases&prop=links&formatversion=2)。默认的JSON格式为向后兼容性做了奇怪的事情。 – Tgr

+0

谢谢@Tgr!这在哪里记录?我无法追踪这些知识。 – kal

+0

https://www.mediawiki.org/wiki/API:Data_formats#JSON_parameters – Termininja

回答

1

你是对的,ns代表namespace,和所有35 namespaces in Wikipedia are numbered for programming purposes...

空的存在表示此页面的链接在维基百科上可用。如果链接不存在(这是一个redlink),则此行将会丢失(例如Wikipedia:Most-wanted articles)。

顺便说一句,你可以通过使用action query得到相同的,但更紧凑的结果:

https://en.wikipedia.org/w/api.php?action=query&titles=List_of_cognitive_biases&prop=links&pllimit=500 

对于示例的结果将是:

"links": [ 
    { 
     "ns": 0, 
     "title": "Anthropomorphism" 
    },{ 
     "ns": 0, 
     "title": "Apophenia" 
    }, 
    ... 
] 
1

属性名称,当你学会了API内部使用,它主要用于一个结果的格式可能会更有意义XML输出,而不是您正在查看的JSON格式。如果你看看你的XML查询结果,他们是

<parse title="List of cognitive biases" pageid="510791"> 
    <links> 
    <pl ns="14" exists="" xml:space="preserve">Category:Articles with unsourced statements from November 2013</pl> 
    <pl ns="10" exists="" xml:space="preserve">Template:Biases</pl> 
    … 
    <pl ns="0" exists="" xml:space="preserve">Academic bias</pl> 

现在,你的问题。

我在猜ns代表“命名空间”?

是的。

但为什么它是一个整数?

因为它是命名空间ID。名称空间的名称可能会更改,它可能会得到别名和类似的东西。你可以query those

为什么exists为每个对象都为空?

因为它是一个布尔属性。链接页面不存在时,它会完全丢失。

为什么看起来是名为*的页面名称键?

因为它是“XML标签”对象的内容。