Table of Contents

REST 传输

基于 ASP.NET Minimal API,TKWF 自动为所有 Controller 生成 REST 端点。


启用 REST

builder.ConfigWebAppDomain<AppUserInfo, AppDomainInitializer>()
    .UseWebSession()
    .UseRestApiService<AppUserInfo>()      // ← 自动注册 REST 端点
    .Build();

自动生成的端点

标注驱动模式

[GenerateController]
public class TodoService(DomainUser<AppUserInfo> user)
    : DomainServiceBase<AppUserInfo>(user)
{
    public async Task<List<Todo>> GetTodosAsync()
    {
        return await Repository.SelectAsync();
    }

    public async Task<Todo> CreateTodoAsync(string title, string content)
    {
        // ...
    }
}

自动生成:

GET  /api/todo/getTodos
POST /api/todo/createTodo  {"title": "...", "content": "..."}

契约先行模式

手写 Controller 同样自动注册:

public class TodoController<TUserInfo> : ControllerBase<TUserInfo>
    where TUserInfo : IUserInfo
{
    public async Task<List<Todo>> GetTodosAsync() { ... }
}

路由约定

方法签名 HTTP 方法 路由
GetTodosAsync() GET /api/{controller}/getTodos
CreateTodoAsync(input) POST /api/{controller}/createTodo
UpdateTodoAsync(id, input) PUT /api/{controller}/updateTodo
DeleteTodoAsync(id) DELETE /api/{controller}/deleteTodo

路由前缀可配置:

options.Rest = new RestApiOptions
{
    RoutePrefix = "api/v1",
    EnableOpenApi = true,        // 自动生成 OpenAPI 文档
};

参考