Всем привет!
В рамках изучения фреймворка Vue.js реализовал небольшой сервис поиска по Википедии.
Приложение представляет собой веб-клиент с визуальным веб-интерфейсом, позволяющий производить поиск по списку статей в Википедии в пространстве имён Википедии "Статьи" и поиск по имени файлов изображений. Реализована маршрутизация между вкладками с сохранением в URL параметров запроса и возможностью подгрузки данных после нативной браузерной перезагрузки страницы (воспроизведение состояния после перезагрузки).
В приложении реализована серверная часть на node.js, позволяющая запустить публичный http-сервер, принимающий запросы от веб-клиента, передающий их программному интерфейсу приложения (ПИП, API), который, в свою очередь, обращается к ПИП Википедии, обрабатывает полученные от Википедии данные, после чего http-сервер возвращает обработанный ответ веб-клиенту.
Однако есть ограничения. Несмотря на то, что ПИП Википедии довольно хорошо описан, не всегда есть возможность сформировать оптимальный запрос, что связано с особенностью архитектуры ПИП Википедии. Например, насколько известно, нет возможности (или я не нашёл способ) получить одновременно название статьи, краткое описание и ссылку на страницу, в связи с чем в текущей реализации для комбинации перечисленных данных на уровне промежуточного ПИП используются 3 вида запросов, что, конечно же, неоптимально.
В связи с этим количество сущностей запросов ограничено 10-ю, то есть, при поиске или показе случайных статей будет выведено не более 10 сущностей.
В реальности для получения основных данных по 10 статьям (название, описание, ссылка) будет сделан 21 запрос к ПИП Википедии:
- запрос случайных статей
- запрос на каждую статью отдельно на основе id
- запрос выдержки (extracts) из каждой статьи
Демо можно посмотреть тут: wikisearch.finecode.ru
В демо-версии есть ограничения на количество запросов с одного ip - не более 20-и запросов в час.
Проект может быть использован как учебный для изучения технологий Vue.js, Redux, Node.js.
Развитие, доработка, оптимизация и улучшения приветствуются.
Репозиторий
Рабочий экземпляр