04 HTTP сервер
Один из вариантов коммуникации с клиентами и сторонними сервисами - веб сервер Fastify
Fastify
Сервис-обвертка инициализирет библиотеку fastify c расширениями: @fastify/cors, @fastify/swagger, @fastify/swagger-ui, @fastify/multipart.
В отличии от оригинального Fastify, сервис позволяет динамически добавлять и удалять новые маршруты без прерывания работы запущенных запросов после запуска сервера.
Также реализована плавная(greceful) остановка сервиса.
Для начала, надо добавить пакет из corelibs:
npm install ./corelibs/fastify
Пример работы с Fastify:
import {Fastify} from '@morphcluster/fastify'
...
//Добавление Fastify к хосту
let fastify = new Fastify( host, {"host" : "127.0.0.1", "port" : 80} )
host.addService(fastify)
...
//Добавление маршрута, в формате fastify
fastify.addRoute({...})
//Запуск пересоздания машрутов, чтобы отобразились изменения. Начатые вызовы сброшены не будут
await fastify.restart()
Формат для добавления новых маршрутов можно посмотреть в официальной документации
FastifyRest
Чтобы публичные запросы сервисов хоста были доступны по http(s), можно воспользоваться сервисом FastifyRest. Он автоматически обнаружит запросы сервиса к публикации и создаст маршруты.
import {ServiceHost} from '@morphcluster/core'
import {Fastify,FastifyRest} from '@morphcluster/fastify'
...
//Fastify - зависимость FastifyRest
host.addService(new Fastify( host, {"host" : "127.0.0.1", "port" : 80} ))
//Добавление FastifyRest
host.addService(new FastifyRest( host ))
//Для публикации, сервис должен обязателно быть добавлен в ServiceHost
host.addService(new Test())
Проверить работу можно будет по ссылке http://127.0.0.1/documentation. Там автоматически разворачиватся OpenApi/Swagger со всеми доступными маршрутами.
Вызов, производимый извне имеет проверку доступа, при этом запросы между сервисами не замедляются этой проверки, сессия передается напрямую.
No Comments