لوگوی فریم‌ورک Fusion ساخته Cipher UnitFusion

مسیرهای HTTP سفارشی

مسیرهای سطح‌متد با http_get تا http_options (و aliasهای HttpGet)

Convention در برابر سفارشی

هر کلاس FusionBaseApi می‌تواند مسیرها را به دو شکل در معرض بگذارد:

حالتچگونهمسیر mount
Conventionمتدهای get, post, put, patch, delete, head, optionsمسیر پایهٔ کلاس از @route
سفارشی@http_get … @http_options (یا HttpGet … HttpOptions) روی هر متدمسیر پایه به‌هم‌چسبیده با قالب

هر دو روی یک کلاس مجازند.

Decoratorهای متد

از fusion_framework.http_route import کنید. آرگومان اول هر decorator قالب مسیر است.

DecoratorAliasمتد HTTP
http_getHttpGetGET
http_postHttpPostPOST
http_putHttpPutPUT
http_patchHttpPatchPATCH
http_deleteHttpDeleteDELETE
http_headHttpHeadHEAD
http_optionsHttpOptionsOPTIONS

گزینه‌های مشترک

گزینهرفتار
tagsNone از @route کلاس ارث می‌برد؛ [] پاک می‌کند؛ […] جایگزین می‌کند
descتوضیح عملیات (OpenAPI)
titleعنوان / summary عملیات
deprecatedعلامت deprecated (False به‌صورت پیش‌فرض)

به‌هم‌چسبیدن مسیر و توکن‌ها

  • قالب نسبی (بدون / ابتدایی) به مسیر پایهٔ @route کلاس می‌چسبد.
  • قالب مطلق که با / شروع شود پایهٔ کلاس را نادیده می‌گیرد و همان‌جا mount می‌شود.
  • [module] از نام کلاس ساخته می‌شود (UserModule → user).
  • [action] از نام handler، با حذف پسوند 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)

aliasهای PascalCase هم قابل‌استفاده‌اند (@HttpGet(...), @HttpPost(...), …).

ثبت

ماژول را از main.py (یا entrypoint) قبل از listen() import کنید تا ثبت @route اجرا شود.

نمونهٔ فریم‌ورک: examples/custom_http_routes.py.

در این صفحه