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

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

Маршруты на уровне метода — http_get … http_options (и алиасы HttpGet)

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

Каждый класс FusionBaseApi может объявлять маршруты двумя способами:

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

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

Декораторы методов

Импорт из fusion_framework.http_route. Первый аргумент — шаблон пути.

ДекораторАлиасHTTP-метод
http_getHttpGetGET
http_postHttpPostPOST
http_putHttpPutPUT
http_patchHttpPatchPATCH
http_deleteHttpDeleteDELETE
http_headHttpHeadHEAD
http_optionsHttpOptionsOPTIONS

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

ПараметрПоведение
tagsNone наследует от @route класса; [] очищает; […] переопределяет
descОписание операции (OpenAPI)
titleЗаголовок / summary операции
deprecatedПометить операцию устаревшей (по умолчанию False)

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

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

Пример (GET + POST)

from fusion_framework import status
from fusion_framework.api import FusionBaseApi
from fusion_framework.http_route import http_delete, http_get, http_post
from fusion_framework.route import route


@route("/api/[module]", tags=["users"])
class UserModule(FusionBaseApi):
    # Convention: GET /api/user
    def get(self):
        return self.response({"mode": "convention"}, status=status.HTTP_SUCCESS)

    # Пользовательский: GET /api/user/test/user
    @http_get("test/[action]", title="User action")
    def UserAction(self):
        return self.response({"mode": "custom", "action": "user"}, status=status.HTTP_SUCCESS)

    # Пользовательский: POST /api/user/create/create
    @http_post("create/[action]", title="Create user", tags=["users", "write"])
    def CreateAction(self):
        return self.response({"created": True}, status=status.HTTP_SUCCESS)

    # Абсолютный: DELETE /admin/users/purge
    @http_delete("/admin/users/purge", deprecated=True)
    def Purge(self):
        return self.response({"purged": True}, status=status.HTTP_SUCCESS)

Алиасы в PascalCase взаимозаменяемы (@HttpGet(...), @HttpPost(...), …).

Регистрация

Импортируйте модуль из main.py (или точки входа) до listen(), чтобы сработала регистрация @route.

Пример фреймворка: examples/custom_http_routes.py.

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