Skip to main content

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 со всеми доступными маршрутами. Вызов, производимый извне имеет проверку доступа, при этом запросы между сервисами не замедляются этой проверки, сессия передается напрямую.