Введение в провайдеры в Nest
Пусть список записей собирает метод контроллера: он и адрес открывает, и хранит данные, и решает, что отдать. Такой метод разрастается, а второй адрес, которому нужны те же данные, вынужден копировать те же правила.
Провайдер - класс, который Nest создаёт сам и передаёт туда, где он нужен. Сервис - обычный такой класс: в нём лежат данные и операции над ними, а не привязка к адресу страницы. Контроллер остаётся тонким: он только отвечает на запрос и спрашивает готовый результат у сервиса.
Фреймворк не создаст экземпляр класса сам по себе. Его нужно записать в корневом модуле в списке провайдеров. Тогда Nest построит объект и сможет передать его туда, где он нужен. Без этой записи класс лежит в файле и в работе приложения не участвует.
Разделение снимает дублирование: один сервис кормит несколько маршрутов, а правила списка меняют в одном месте. На сайте с постами контроллер только открывает адрес и возвращает готовый список. Как записи устроены, он не знает.