我正在尝试使用mediawiki API来处理FreeCodeCamp上的项目。我已经在API文档中阅读了这些页面:
目前尚不清楚真正的差异是什么,何时以及何时需要使用每一个。这是我发出的三个API调用,每个调用产生的结果略有不同:
en.wikipedia.org/w/api.php?action=opensearch&search=Albert
在这里,我得到一个包含4个项目的数组,第一个是搜索词,第二个是结果页面标题列表,第三个是每个页面的小片段,第四个是每个页面的URL 。
en.wikipedia.org/w/api.php?action=query&generator=search&gsrsearch=Albert&format=json
在这一个中,有一个generator=search
,我不明白。在生成器的API页面上,它只是说:Get the list of pages to work on by executing the specified query module.
,这实际上并不是非常有用。这是什么意思?
en.wikipedia.org/w/api.php?action=query&list=search&srsearch=Albert&format=json
除了我使用list=search
之外,这与前一个相同。
所以我的问题是:
在第一次和第二次通话之间,我正在使用action=opensearch
和action=query
:真正的区别是什么?
list
和generator
之间有什么区别?
最后,为什么在使用generator=search
时,gsrprop=snippet
不显示任何代码段:API Sandbox for this,为什么inprop=url
不起作用使用list=search
时:API Sandbox for this
正如你所看到的,两者几乎相同,只有一个使用生成器,另一个使用列表,但都提到了inprop = url和snippets(srprop& gsrprop)。
答案 0 :(得分:2)
opensearch
适用于OpenSearch API。除非您正在实施该API(即您正在编写浏览器或搜索引擎或类似内容),否则不应使用它。 list=prefixsearch
提供了类似的功能,没有OpenSearch合规所需的语法怪癖。
生成器用于将结果“管道”到另一个API中。 list=search
和generator=search
将为您提供相同的页面集,但在第一种情况下,搜索模块将提供有关页面的信息(例如,如果您指定srprop=snippet
,它将添加在片段中),在第二种情况下,它将由您添加到prop=
参数的任何API模块提供(这就是gsrprop=snippet
不执行任何操作的原因)。这基本上是执行搜索查询然后查询结果的一些数据的快捷方式。