Маршрутизация запросов к серверу и структура каталогов Node.js/EXPRESS
Пока что мы написали одностраничный сервер с единственным запросом. Но сама суть сервера подразумевает, что он должен обрабатывать целый спектр запросом и отправлять различные ответы. Для этого нужна маршрутизация, чтобы мы разные запросы отправляли по своим отдельным URL.
Давайте наш путь POST запроса к сервиcу Home будет
ROUTES: /api/home (По этому адресу у нас будет запрос к home)
CONTROLLER: home.controller.js (Здесь мы проверяем запрос и передаем в сервис)
SERVICE: home.service.js (Обрабатываем запрос и отправляем ответ в контроллер )
Все файлы положим в папку src/home
Создаем в корне эту папку
$ mkdir src
$ cd src
$ mkdir home
$ cd home
Создаем два файла
$ touch home.controller.js
$ touch home.service.js
service.js
Сервис у нас отвечает за обработку и ответ на запрос. Давайте придумаем простую задачу. Мы будем получать от сайта json {"text" : "какой-то текст"}, а возвращать json{"upperText" : "КАКОЙ-ТО ТЕКСТ"}
Для этого мы в сервисе получаем json, преобразуем и отдаем другой json
controller.js
В контроллере мы импортируем наш сервис.
import {HomeService} from './home.service.js';
Импортируем Router, чтобы настроить url для приема POST запроса
import {Router} from 'express';
Здесь мы назначили url
router.post('/home', (req, res) =>{
и передали body из запроса в сервис
constjsonText=homeService.createText(req.body); res.status(201).json(jsonText);
server.js
В сервере нужно импортировать контроллер
import { homeRouter } from "./src/home/home.controller.js";
и передать в него все запросы:
app.use('/api' , homeRouter)
Тестируем
Для этого традиционно используем Thunder Client для VS Code