Маршрутизация запросов к серверу и структура каталогов 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

Маршрутизация запросов к серверу и структура каталогов Node.js/EXPRESS

controller.js

В контроллере мы импортируем наш сервис.

import {HomeService} from './home.service.js';

Импортируем Router, чтобы настроить url для приема POST запроса

import {Router} from 'express';

Маршрутизация запросов к серверу и структура каталогов Node.js/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)

Маршрутизация запросов к серверу и структура каталогов Node.js/EXPRESS

Тестируем

Для этого традиционно используем Thunder Client для VS Code

Маршрутизация запросов к серверу и структура каталогов Node.js/EXPRESS
11
Начать дискуссию