书籍定位
- 面向:希望用 ASP.NET Core 构建稳定、安全、可维护 Web API 的 .NET 开发者
- 特色:全程以“棋盘游戏俱乐部”为背景,从零到生产环境,完整落地 REST、GraphQL、gRPC 三种主流风格
- 版本:基于 .NET 6 / ASP.NET Core 6 LTS,示例代码可直接运行
知识地图(4 部分 12 章)
Part 1 入门
-
Web API 全景
- 什么是 Web API、四种使用场景(Public/Partner/Internal/Composite)
- REST、SOAP、GraphQL、gRPC 优劣对比
- ASP.NET Core 架构:Program.cs 统一入口、服务与中间件、Minimal API vs Controller、异步模式 TAP
-
第一个项目 MyBGList
- 安装 VS2022 + .NET 6 SDK → 创建 Web API 模板
- launchSettings.json / appsettings.json 详解
- 用 BoardGameController 替换 WeatherForecast,完成 SwaggerUI 初体验
-
RESTful 约束
- 6 大约束:Client-Server、Stateless、Cache、Layered、COD、Uniform Interface
- 实操:CORS、响应缓存、HATEOAS、API 文档与版本控制
Part 2 基础概念
-
数据建模
- SQL vs NoSQL:为何选择 SQL Server + EF Core
- 安装本地 SQL Express → 用户/登录 → 建库建表
- EF Core:Code-First、DbContext、迁移、复合主键、导航属性
-
CRUD 与查询
- LINQ 查询/方法语法、Lambda、IQueryable
- 注入 DbContext → 同步 vs 异步
- 用 CsvHelper 将 2 万条 Kaggle 棋盘游戏导入数据库
- 实现分页、排序、过滤(Dynamic LINQ)
-
数据验证与错误处理
- 内置验证属性 + 自定义验证属性
- ModelState 自动 vs 手动校验
- 统一异常中间件 → ProblemDetails(RFC 7807)
Part 3 进阶主题
-
日志系统
- ILogger 接口、日志级别
- Serilog:结构化日志、Console/Sink/Enricher 配置
-
缓存
- 响应缓存、Cache Profile、内存缓存、分布式缓存(SQL Server / Redis)
-
认证与授权
- ASP.NET Core Identity:用户、角色、JWT
- RBAC:Claim、Policy、AuthorizeAttribute
- 测试接口保护流程
-
超越 REST
- REST 缺点:Over-fetching / Under-fetching
- GraphQL 查询与 Mutation 实现
- gRPC Server & Client、双向流、授权
- 其他协议:NDJSON、Falcor、Thrift
Part 4 走向生产
-
API 文档最佳实践
- Swagger/OpenAPI + Swashbuckle
- XML 注释、注解、过滤、自定义 UI
-
发布与部署
- 预发布检查、域名、CDN
- Azure 创建 Windows VM → 安装 IIS、SSL、Web Deploy
- Visual Studio Publish Profile → 一键部署
亮点速览
- 实战驱动:从空数据库到承载 2 万条记录的生产级 API
- 安全贯穿:CORS、JWT、RBAC、异常统一处理、日志审计
- 性能优化:分页、缓存、异步、结构化日志
- 可扩展架构:Minimal API 与 Controller 混用、分层系统、版本化路由
- DevOps 视角:Secret Manager、CI/CD、云端部署、Swagger 文档自动化
适合读者
- 已掌握 C# 基础、希望深入后端开发的工程师
- 需要为前端/移动端/第三方提供稳定 API 的技术负责人
- 准备将 .NET 应用迁移到云原生的架构师
阅读完毕,你将拥有一套可直接落地的“设计-开发-测试-部署”全链路方法论,以及一份可运行的 MyBGList 示例代码库。