Перейти до основного вмісту

@ditsmod/rest

Як видно з назви, модуль @ditsmod/rest забезпечує підтримку REST. Він містить зокрема:

  • ініт-декоратори для кореневого модуля та модуля фіч - restRootModule, restModule;
  • розширення, які забезпечують створення REST-роутів - RoutesExtension, PreRouterExtension;
  • роутер, що має наступний тип:
interface Router {
on(method: HttpMethod, path: string, handle: RouteHandler): this;
all(path: string, handle: RouteHandler): this;
find(method: HttpMethod, path: string): RouterReturns;
}

type RouteHandler = (
rawReq: RawRequest,
rawRes: RawResponse,
params: PathParam[],
queryString: any
) => Promise<void>;

class RouterReturns {
handle: RouteHandler | null;
params: PathParam[] | null;
}

interface PathParam {
key: string;
value: string;
}

Готовий приклад використання даного модуля можна знайти в прикладах репозиторія Ditsmod.

Встановлення та підключення

Встановлення:

npm i @ditsmod/rest

Підключення:

import { restModule } from '@ditsmod/rest';

@restModule({
// ..
})
export class AppModule {}

Інтеграція кастомного роутера

Якщо ви хочете інтегрувати кастомний роутер для застосунку Ditsmod, достатньо щоб ваш роутер імплементував вищезазначений інтерфейс Router, після чого його можна додавати в провайдери на рівні застосунку:

import { restModule, Router } from '@ditsmod/rest';
import { MyRouter } from './my-router.js';

@restModule({
providersPerApp: [{ token: Router, useClass: MyRouter }],
})
export class MyCustomRouterModule {}

Група розширень ROUTES_EXTENSIONS

З даного модуля експортується токен групи розширень ROUTES_EXTENSIONS. Розширення з цієї групи повертають метадані з інтерфейсом Array<MetadataPerMod3> - це масив динамічних метаданих, які призначені для створення обробників запитів. Кожен елемент цього масиву - це окремий роут.

Група розширень PRE_ROUTER_EXTENSIONS

З даного модуля також експортується токен групи розширень PRE_ROUTER_EXTENSIONS. Розширення з цієї групи використовує метадані, які повертає група розширень ROUTES_EXTENSIONS, щоб створювати обробники HTTP-запитів.