Skip to content
bitzorcas
中EN

Reference

Web 与 API 基础设施构建块:Minimal API 与管线装配

深入解析 BitzOrcas.Modern 的 Web 与 HTTP API 基础设施底座,掌握 [GenerateEndpoint] 编译期 Minimal API 绑定、ASP.NET Core 中间件拓扑与 RFC 9457 Problem Details 规范。

Last updated

在微服务与模块化单体架构中,API Host 的职责常常被严重误解:

  • 很多团队把业务逻辑直接写在 Controller 中,导致 Controller 臃肿不堪;
  • 中间件顺序随意拼接,导致认证发生在租户解析之后,产生严重的安全越权漏洞。

BitzOrcas.Modern 确立了严格的“API Host 是组合根(Composition Root),而非业务层”的架构铁律: 所有 HTTP 端点由 [GenerateEndpoint] 在编译期静态绑定为 Minimal API,业务用例完全保留在 Application 垂直切片中。

API Host 中间件装配与请求流转拓扑

1. Inbound HTTP Request

2. Forwarded Headers + CORS + Security Headers

3. Authentication (解析 JWT / API Key)

4. Tenant Resolution (解析并绑定 ICurrentTenant)

5. Rate Limiting + API Deprecation Guard

6. Minimal API Route Dispatch ([GenerateEndpoint])

7. Mediator Pipeline (10 级横切行为流水线)

8. Target Use Case Handler

9. 统一映射为 HTTP 响应或 RFC 9457 Problem Details


第一步:声明式 Minimal API 端点

通过标注 [GenerateEndpoint],Roslyn 增量生成器在编译期直接产出高性能静态映射代码:

CreateNoteCommand.cs: 声明式路由与端点元数据
using BitzOrcas.Application.Abstractions.Authorization;
using BitzOrcas.Domain.Results;
using BitzOrcas.Endpoint.Attributes;
using Mediator;
namespace BitzOrcas.Sandbox.Application.Commands;
// 声明式端点:支持 HTTP 方法、路径、Swagger 分组与速率限制策略
[GenerateEndpoint(
HttpRoute.Post,
"/api/notes",
Tag = "Notes",
RateLimitPolicy = "userPolicy",
RequestTimeoutPolicy = "StandardCommand")]
public sealed record CreateNoteCommand(string Title)
: ICommand<Result<string>>, IAuthorizedRequest
{
// 资源与动作授权凭据
public ResourceDescriptor Resource { get; } = new("sandbox", "note");
public AuthorizationAction Action { get; } = AuthorizationAction.Create;
}

第二步:标准 RFC 9457 Problem Details 错误响应

当 Handler 返回 Result.Failure 或发生未捕获异常时,框架统一转换为标准的 Problem Details JSON 格式:

HTTP 400 Validation Error 响应结构
{
"type": "https://docs.bitzsoft.com/problems/validation",
"title": "Bad Request",
"status": 400,
"detail": "客户名称长度不能超过 100 个字符。",
"instance": "/api/customers",
"errorCode": "Customer.NameTooLong",
"errorType": "Validation",
"traceId": "4bf92f3577b34da6a3ce929d0e0e4736"
}

总结

BitzOrcas 的 Web API 基础设施实现了极致的高内聚:

  • 编译期静态化:零运行时反射扫描,启动毫秒级;
  • 中间件顺序即契约:严格保障认证、租户与授权的执行顺序;
  • RFC 工业标准:统一的 Problem Details 响应结构让前端异常处理极其标准。

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%