Router
Регистрация классовых API с [Route] в C#
Обзор
Пометьте подкласс FusionBaseApi атрибутом [Route(...)], затем вызовите Route.Register<T>() или Route.RegisterAll(assembly) до 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-глаголы — публичные instance-методы с именами Get, Post, Put, Patch, Delete, … (без учёта регистра).
Шаблоны путей
Те же токены, что в Python/Node: статические сегменты, [module], {name} → Params["name"].
Version = "v1" добавляет префикс к resolved-пути.
Опции [Route]
| Свойство | Назначение |
|---|---|
Tags, Desc, Title, Deprecated | Метаданные (Swagger, когда будет включён) |
Version | Префикс пути |
Roles | Добавляет role middleware |
RoleClaim / RoleStateKey | Настройка lookup claim |
Также можно вызвать Route.Register(type, path, middleware:, roles:).
Представление запроса
| Член | Содержимое |
|---|---|
Method, Path, Body | Базовые поля |
Headers, Params, Query | Карты |
State | Сумка middleware (JsonNode) |
Response(body, status, headers?) | Helper конверта ответа |
Ошибки
Бросайте HttpException или возвращайте словари { status, body }.