Router
Регистрация классовых API с route / router в Node.js
Обзор
Декорируйте подкласс FusionBaseApi через route(...) (или router). Регистрация происходит при импорте модуля — импортируйте его из main.ts до listen().
import { FusionBaseApi, route, status } from "fusion-framework";
export const ItemModule = route("/api/[module]/{id}", {
tags: ["items"],
desc: "Items by id",
})(
class ItemModule extends FusionBaseApi {
get() {
return this.response({ id: this.params.id }, status.HTTP_SUCCESS);
}
},
);Path-параметры читаются из this.params (строки). При необходимости приводите через coerceParam — Node не биндит сигнатуры handlers, как Python.
route vs router
| Символ | Роль |
|---|---|
route(path, options?) | Основной — путь + метаданные Swagger + middleware / roles |
router(path, options?) | Та же функция (alias) |
Шаблоны путей
| Токен | Значение |
|---|---|
| Статический текст | Точный сегмент |
[module] | Stem имени класса в нижнем регистре, суффикс Module снимается |
{name} | Динамический path-параметр → this.params.name |
route("api/[module]/{id}")(class ProductModule extends FusionBaseApi { ... });
// → /api/product/{id}version: "v1" добавляет префикс к resolved-пути: /v1/api/product/....
Опции
| Опция | Назначение |
|---|---|
tags, desc, title, deprecated | Метаданные OpenAPI (когда включено) |
version | Префикс пути |
middleware | Список middleware только для маршрута |
roles | Добавляет requireRoles(...) |
roleClaim / roleStateKey | Настройка lookup claim ролей |
Представление запроса
| Accessor | Содержимое |
|---|---|
this.method / this.path / this.body | Базовые поля запроса |
this.headers / this.params / this.query | Карты |
this.state | Сумка middleware |
this.response(body, status?, headers?) | Helper конверта ответа |
Ошибки
Бросайте или возвращайте конверты HTTPException / { status, body }. См. Middleware.