Я пытаюсь работать с MediaWiki API для проекта на FreeCodeCamp. Я прочитал эти страницы в документации по API:
И до сих пор не ясно, каковы реальные различия, и когда и почему мне нужно использовать каждый из них. Вот три вызова API, которые я сделал, каждый из которых дает немного разные результаты:
en.wikipedia.org/w/api.php?action=opensearch&поиск = Albert
Здесь я получаю массив из 4 элементов, первый из которых является поисковым термином, второй — список заголовков страниц результатов, третий — небольшой фрагмент каждой страницы, а четвертый — URL-адрес каждой страницы.
en.wikipedia.org/w/api.php?action=query&генератор = поиск&gsrsearch = Albert&Формат = 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&список = поиск&srsearch = Albert&Формат = JSON
Это то же самое, что и предыдущий, за исключением того, что я использую list=search
,
Итак, мои вопросы:
Между первым и вторым звонками использую action=opensearch
а также action=query
: каковы реальные различия?
Каковы различия между list
а также generator
?
И, наконец, почему при использовании generator=search
, gsrprop=snippet
не отображает фрагменты: API Sandbox для этого, и почему inprop=url
не работает при использовании list=search
: API Sandbox для этого
Как видите, оба практически идентичны, за исключением того, что один использует генератор, а другой — список, но оба упоминают inprop = url и snippets (srprop & gsrprop).
opensearch
для OpenSearch API. Если вы не реализуете этот API (т.е. вы пишете браузер или поисковик или что-то в этом роде), вы не должны его использовать. list=prefixsearch
обеспечивает аналогичную функциональность без синтаксических изысков, необходимых для соответствия требованиям OpenSearch.
Генераторы используются для «передачи» результатов в другой API. list=search
а также generator=search
предоставит вам тот же набор страниц, но в первом случае информация о страницах будет предоставлена модулем поиска (например, если вы укажете srprop=snippet
он будет добавлен во фрагментах), во втором случае он будет предоставлен какими-либо модулями API, которые вы добавляете в prop=
параметр (вот почему gsrprop=snippet
ничего не делает). Это в основном ярлык для выполнения поискового запроса и последующего запроса некоторых данных для результатов.
Других решений пока нет …