Biwen.QuickApi ,NET9+ MinimalApi CQRS
$ dotnet add package Biwen.QuickApi临时文档地址
Biwen.QuickApi 2+,是一个微型aspnetcore开发框架,提供minimalapi的QuickApi封装,提供IQuickEndpoint书写minimalapi,
模块化支持Modular,多租户,发布订阅:IEvent,作业调度:IScheduleTask,审计:Auditing,缓存,LocalLock,OpenApi ~~
点击访问示例项目:MySurvey - 一个基于 Biwen.QuickApi 构建的完整问卷调查系统,展示了框架在实际业务场景中的应用。
Biwen.QuickApi.Contents - 一个强大的无头CMS扩展,提供以下功能:
Elasticsearch的全文搜索支持public class MyStore
{
public static Todo[] SampleTodos()
{
return [new(1, "Walk the dog"), new(2, "Buy groceries")];
}
}
[QuickApi("todos")] // 映射到 /api/todos
public class TodoApi : BaseQuickApi<EmptyRequest,Todo[]>
{
public override async ValueTask<Todo[]> ExecuteAsync(EmptyRequest request)
{
await Task.CompletedTask;
return MyStore.SampleTodos();
}
}
public class CreateTodoRequest : BaseRequest<CreateTodoRequest>
{
[Required]
public string Title { get; set; } = null!;
public bool IsCompleted { get; set; }
}
[QuickApi("todos", Verbs = Verb.POST)]
[OpenApiMetadata("创建待办事项", "添加一个新的待办事项到系统")]
public class CreateTodoApi : BaseQuickApi<CreateTodoRequest, Todo>
{
private readonly ITodoService _todoService;
public CreateTodoApi(ITodoService todoService)
{
_todoService = todoService;
}
public override async ValueTask<Todo> ExecuteAsync(CreateTodoRequest request, CancellationToken cancellationToken)
{
return await _todoService.CreateAsync(request.Title, request.IsCompleted);
}
}
// 定义事件
public record TodoCreatedEvent(Todo Todo) : IEvent;
// 发布事件
[QuickApi("todos", Verbs = Verb.POST)]
public class CreateTodoApi : BaseQuickApi<CreateTodoRequest, Todo>
{
private readonly ITodoService _todoService;
private readonly IPublisher _publisher;
public CreateTodoApi(ITodoService todoService, IPublisher publisher)
{
_todoService = todoService;
_publisher = publisher;
}
public override async ValueTask<Todo> ExecuteAsync(CreateTodoRequest request)
{
var todo = await _todoService.CreateAsync(request.Title, request.IsCompleted);
// 发布事件
await _publisher.PublishAsync(new TodoCreatedEvent(todo));
return todo;
}
}
// 处理事件
[EventHandler]
public class TodoCreatedEventHandler : IEventHandler<TodoCreatedEvent>
{
private readonly ILogger<TodoCreatedEventHandler> _logger;
public TodoCreatedEventHandler(ILogger<TodoCreatedEventHandler> logger)
{
_logger = logger;
}
public Task HandleAsync(TodoCreatedEvent @event)
{
_logger.LogInformation("新的待办事项已创建: {Title}", @event.Todo.Title);
return Task.CompletedTask;
}
}
Biwen.QuickApi.DocSite项目获取详细文档