/Memcached-OMDb-API-entrance-exam

An entrance exam for a backend dev for a JS course on from T-Bank Fintech

Primary LanguageJavaScript

Memcached OMDb API

Вступительное задание для бэкенд-специалиста на курс по JS-разработке от Т-Банк Финтеха.

Note

Вступительное задание выполнялось с базовыми знаниями синтаксиса JS на начальном этапе на протяжении 4-х дней. Тем не менее, по результатам проверки я успешно прошёл отбор и был зачислен на курс. ✅

Задача

Продумать и разработать структуру API для кеширования данных на серверной части, а также контроля над кешем. Выбрать API из данного списка: Public APIs. Реализовать in-memory кеш, который позволит приложению при запросе к API сначала проверить, имеются ли данные в кеше, и выполнять запрос только в том случае, если данные в кеше отсутствуют. Также реализовать методы очистки кеша и изменения размера кеша.

Требования и критерии оценки

  1. Работоспособность приложения и корректное выполнение всех требуемых функций кеша:
    • проверка наличия данных;
    • добавление новых данных;
    • обновление данных;
    • очистка кеша;
    • изменение размера кеша.
  2. Документация API с использованием Swagger: полнота и ясность описания всех маршрутов и параметров.
  3. Построение архитектуры проекта с делением его на слои.
  4. Использовать один из инструментов для проверки качества кода (ESLint, Prettier и т. д.).

Характеристики разработки

  • Для реализации выбран OMDb API, который позволяет получать информацию с портала IMDb
  • Поддерживаются все возможности донорского API и требуемые методы работы с кешем
  • Запросы к донорскому API кешируются до тех пор, пока кеш не достигнет заданного максимального размера
  • Два запроса с разным порядком параметров распознаются и кешируются как одинаковые (если значения параметров равны)
  • Задокументирован не только разрабатываемый API, но и донорский для корректного тестирования запросов

Реализованные API-маршруты

  • GET / — перенаправление на данную страницу
  • GET /docs — документация в Swagger UI
  • GET /api:
    • без параметров — перенаправление на /docs
    • с параметрами — передача параметров в запрос к донорскому API
  • PUT /api — обновление данного запроса в кеше
  • DELETE /api — удаление данного запроса из кеша
  • GET /cache — получение кешированных запросов
  • GET /cache/maxsize — получение максимального размера кеша
  • PUT /cache/maxsize — установка максимального размера кеша
  • DELETE /cache/clear-all — полная очистка кеша

Стек

  • Node.js — программная платформа
  • Express — фреймворк для бэкенда
  • apicache — библиотека для in-memory кеширования ответов API
  • Swagger UI Express — документация к API

Запуск

  1. Установите зависимости в директории клонированного репозитория:
npm install
  1. Получите ключ API на сайте OMDb API или возьмите мой: 18eaeb4f (для тестирования работы кеша это не обязательно).
  2. Запустите сервер:
npm start
  1. Для тестирования API в Swagger UI перейдите на страницу https://localhost:3030/docs.