Логотип Fusion Framework от Cipher UnitFusion

Пользовательские HTTP-маршруты

Маршруты на уровне метода — httpGet … httpOptions на FusionBaseApi

Convention и пользовательские маршруты

РежимКакПуть монтирования
ConventionМетоды get, post, put, patch, delete, head, optionsБазовый путь класса из route(...)
ПользовательскийhttpGet … httpOptions на любом методеБазовый путь склеивается с шаблоном

Оба режима могут сосуществовать на одном классе.

Хелперы методов

Декораторов нет. Примените хелперы высшего порядка к методам prototype, затем оберните класс в route(...).

Импорт из fusion-framework:

ХелперHTTP-метод
httpGetGET
httpPostPOST
httpPutPUT
httpPatchPATCH
httpDeleteDELETE
httpHeadHEAD
httpOptionsOPTIONS

Сигнатура: httpGet(route, options?)(handler) — то же для остальных хелперов.

Общие параметры

Объект options — второй аргумент:

ПараметрПоведение
tagsНе указан — наследование от route класса; [] очищает; […] переопределяет
descОписание операции
titleЗаголовок / summary операции
deprecatedПометить операцию устаревшей

Склейка путей и токены

  • Относительные шаблоны (без ведущего /) присоединяются к базовому пути route(...).
  • Абсолютные шаблоны с ведущим / игнорируют базовый путь класса.
  • [module] раскрывается из имени класса (UserModule → user).
  • [action] — из имени обработчика со снятием суффикса Action / ACTION и lowercase (UserAction → user).

Пример (GET + POST)

import {
  FusionBaseApi,
  httpDelete,
  httpGet,
  httpPost,
  route,
  status,
} from "fusion-framework";

class UserModule extends FusionBaseApi {
  get() {
    return this.response({ mode: "convention" }, status.HTTP_SUCCESS);
  }

  UserAction() {
    return this.response({ mode: "custom", action: "user" }, status.HTTP_SUCCESS);
  }

  CreateAction() {
    return this.response({ created: true }, status.HTTP_SUCCESS);
  }

  Purge() {
    return this.response({ purged: true }, status.HTTP_SUCCESS);
  }
}

httpGet("test/[action]", { title: "User action" })(UserModule.prototype.UserAction);

httpPost("create/[action]", {
  title: "Create user",
  tags: ["users", "write"],
})(UserModule.prototype.CreateAction);

httpDelete("/admin/users/purge", { deprecated: true })(UserModule.prototype.Purge);

export const User = route("/api/[module]", { tags: ["users"] })(UserModule);

Регистрация

Импортируйте файл модуля (чтобы выполнился route(...)) до app.listen().

Пример: examples/custom_http_routes.mjs.

На этой странице