👨‍💻 niltor    📆 2026-10-08 10:56

ApiStandard 快速入门

ApiStandard 面向传统 ASP.NET Core Web API 和模块化业务系统,包含 EF Core、Aspire 迁移资源、AdminService 和 ApiService。

ApiStandard 使用 Aspire 13.6.1;运行 AppHost 前请安装匹配版本的 Aspire CLI。

创建项目

dotnet new install Perigon.templates --version 1.3.17
dotnet new perigon-webapi -n MyWebApi --frontType None
cd MyWebApi

如果需要 Angular 前端,使用 --frontType Angular,然后在 src/ClientApp/WebApp 执行 pnpm install。模板默认不生成和启动前端,AppHost 中的前端资源也需要按需启用。

配置数据库和缓存

在 src/AppHost/appsettings.Development.json 的 Components 节点中配置:

{
  "Components": {
    "Cache": "Memory",
    "Database": "PostgreSQL",
    "IsMultiTenant": true
  }
}

Database 支持 PostgreSQL 和 SqlServer。Cache 支持 Memory、Redis 和 Hybrid;只有选择 Redis 或 Hybrid 时 AppHost 才创建 Redis,并通过 Components__Cache 将选择传给服务。

ApiStandard 默认启用多租户。认证请求必须携带有效的 TenantId;初始化数据库时会创建 default.com,并写入默认业务数据库和分析数据库连接串。缺失、无效或不存在的租户不会自动回退到默认租户或默认连接。

完整的 Components、认证、缓存、登录策略、SMTP、SMS、S3 和环境变量说明请参阅模板配置参考。

创建迁移并运行

Standard 使用 EF Core 迁移。首次创建项目或修改实体后,在项目根目录执行:

.\scripts\EFMigrations.ps1 Init
aspire start --non-interactive

AppHost 会创建 AdminService-Migrations 迁移资源。本地运行时,它通过 RunDatabaseUpdateOnStart() 应用迁移,完成后再启动 AdminService 和 ApiService。发布到 Kubernetes 时,它会生成一次性的迁移 Job。迁移脚本会使用 AdminService 作为启动项目;Components__Database 决定数据库提供程序,租户索引由模型约定统一处理,Components__IsMultiTenant会传递给迁移进程。

EF Core 迁移、UseSeeding/UseAsyncSeeding 和 Kubernetes 发布请参阅数据库迁移与初始化和发布应用。默认模板不包含 SystemMod,因此不会自动创建可登录的管理员账号;安装该模块后请按模块文档初始化账号,不要把示例凭据带入生产环境。

OpenAPI 和测试

Standard 使用 Swashbuckle,默认暴露 OpenAPI JSON:

/swagger/v1/swagger.json

非生产环境还提供 Swagger UI:

/swagger

单元测试不会启动 Aspire:

dotnet test --project tests/UnitTest/UnitTest.csproj

需要真实数据库和多服务环境时再运行 Aspire 集成测试:

dotnet test --project tests/ApiTest/ApiTest.csproj --treenode-filter '/*/*/*/*[Category=Integration]'

集成测试需要 Docker/Podman;迁移失败、健康检查和日志追踪请参考生产运维 Runbook。

模板默认不创建管理员账号。若已安装 SystemMod 并要运行需要登录的测试,请通过 PERIGON_TEST_ADMIN_EMAIL 和 PERIGON_TEST_ADMIN_PASSWORD 环境变量提供测试账号。