@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-запитів.