MediaWiki API - 在 API 调用 url 中 'opensearch' & 'query' 和 'generator' & 'list' 有什么区别

MediaWiki API - what are the differences between 'opensearch' & 'query', and 'generator' & 'list' in the API call url

我正在尝试使用 mediawiki API 来完成 FreeCodeCamp 上的一个项目。我已经通读了 API 文档中的这些页面:

  1. OpenSearch
  2. Generators
  3. Lists
  4. Query

目前还不清楚真正的区别是什么,以及何时以及为什么我需要使用每一个。这是我进行的三个 API 调用,每个调用产生的结果略有不同:

  1. en.wikipedia.org/w/api.php?action=opensearch&search=Albert

在这里,我得到一个包含 4 个项目的数组,第一个是搜索词,第二个是结果页面标题列表,第三个是每个页面的一小段,第四个是 URL到每页。

  1. 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.,这并不是很有帮助。这是什么意思?

  1. en.wikipedia.org/w/api.php?action=query&list=search&srsearch=Albert&format=json

除了我使用的是 list=search,这与上一个相同。

所以我的问题是:

如您所见,两者几乎相同,除了一个使用生成器,另一个使用列表,但都提到了 inprop=url 和代码片段(srprop 和 gsrprop)。

opensearch 用于 OpenSearch API。除非你正在实施 API (即你正在编写浏览器或搜索引擎或类似的东西)你不应该使用它。 list=prefixsearch 提供类似的功能,但没有 OpenSearch 合规性所需的语法怪癖。

生成器用于将 "pipe" 结果转化为另一个 API。 list=searchgenerator=search 将为您提供相同的页面集,但在第一种情况下,有关页面的信息将由搜索模块提供(例如,如果您指定 srprop=snippet,它将添加在片段中),在第二种情况下,它将由您添加到 prop= 参数的任何 API 模块提供(这就是 gsrprop=snippet 不执行任何操作的原因)。这基本上是进行搜索查询然后查询一些数据以获得结果的快捷方式。