Express.js
ЛР10
Создаем на Github репозиторий cwp-10, клонируем его, открываем в IDE
Создаем файл package.json и с помощью терминала устанавливаем express npm i express
Создаем файл index.js, в котором напишем простой сервер на express:
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
})
Запустим наш сервер и зайдем на адрес http://127.0.0.1:3000 в браузере
Нам необходимо разработать API для работы с коллекцией фильмов
1. Модель фильма:
"id": int / string
"title": string
"rating": string // оценка
"year": int // год выпуска
"budget": int // бюджет
"gross": int // сборы
"poster": string // url постера
"position": int // позиция в рейтинге
2. Составить top250.json из 10 фильмов из Top-250 Кинопоиска. Начало ваших 10 фильмов определяется как (N варианта - 1) * 10. Позиции для фильмов начинать с 1 вне зависимости от позиции на Кинопоиске
3. Реализовать логику для следующих URL:

GET /api/films/readall - возвращает массив фильмов отсортированных по полю position по возрастанию

GET /api/films/read - возвращает фильм по переданному в теле запроса id

POST /api/films/create - создает фильм с переданными в теле запроса параметрами / id генерируется на сервере / если фильм с такой позицией уже существует, то все фильмы от данной позиции сдвигаются на один вниз / сервер возвращает созданный фильм

POST /api/films/update - обновляет фильм с переданными параметрами по переданному id / здесь тоже не забываем про сдвиг / возвращаем обновленный фильм / клиент может присылать для обновления только часть полей

POST /api/films/delete - удаляет фильм по переданному id / сдвигаем остальные фильмы так, что бы не было пробелов
4. Добавить валидацию входящих запросов. Например, при создании фильма клиент прислал не всю информацию - возвращаем ему ошибку. Или дата до изобретения кинематографа, или отрицательный бюджет/сборы и т.д.
5. Предусмотреть случай, когда клиент присылает для создания/обновления фильм с такой позицией, что образуется пробел. В этом случае нам надо изменить присланную позицию. Например, у нас два фильма с позициями 1, 2. Клиент присылает фильм на позицию 5. Мы присваиваем такому фильму позицию 3.
6*. При запуске сервера через setTimeout запускать функцию-воркер, которая раз в минуту сохраняет коллекцию фильмов из памяти на диск
Задания со звездочкой предназначены для персонального роста и необязательны к показу при защите лабораторной работы
Синхронизируем локальный репозиторий с удаленным (сделаем push на Github)
Покажите историю коммитов своего репозитория на Github
Продемонстрируйте работу сервера через Postman
Документация по Express