FusionFusion

Router

Register class-based APIs with [Route] in C#

Overview

Annotate a FusionBaseApi subclass with [Route(...)], then call Route.Register<T>() or Route.RegisterAll(assembly) before Listen().

[Route("api/[module]/{id}", Tags = new[] { "items" }, Desc = "Items by id")]
public class ItemModule : FusionBaseApi
{
    public object Get()
    {
        Params.TryGetValue("id", out var id);
        return Response(new { id }, Status.HTTP_SUCCESS);
    }
}

Route.Register<ItemModule>();

HTTP verbs are public instance methods named Get, Post, Put, Patch, Delete, … (case-insensitive).

Path templates

Same tokens as Python/Node: static segments, [module], {name}Params["name"].

Version = "v1" prefixes the resolved path.

Options on [Route]

PropertyPurpose
Tags, Desc, Title, DeprecatedMetadata (Swagger when enabled later)
VersionPath prefix
RolesAppends role middleware
RoleClaim / RoleStateKeyCustomize claim lookup

You can also Route.Register(type, path, middleware:, roles:).

Request view

MemberContent
Method, Path, BodyBasics
Headers, Params, QueryMaps
StateMiddleware bag (JsonNode)
Response(body, status, headers?)Envelope helper

Errors

Throw HttpException or return { status, body } dictionaries.

در این صفحه