API 资产治理:ETag/Cache-Control/分页/排序/投影的“契约基线” 🚀
📚 目录
- API 资产治理:ETag/Cache-Control/分页/排序/投影的“契约基线” 🚀
-
- 0. TL;DR 🧭
- 1. 背景与目标 🎯
- 2. 适用范围 📐
- 3. 资源命名与版本治理(ABP 落地) 🧩
- 4. 查询契约:分页 / 过滤 / 排序 / 投影 🔎
- 5. 缓存契约:ETag / 条件请求 / Cache-Control ⚡
- 6. 错误与一致性:ProblemDetails + Trace Context 🆘
- 7. 安全与最小暴露 🛡️
- 8. 可观测与 SLO 🔭
- 9. “契约校验器”与门禁(Spectral + 代码级) 🧪
- 10. 开发者门户(Swagger/Redoc) 📘
- 11. 兼容性测试集(Newman/Playwright/BDN) 🧪🧪
- 12. ABP vNext 工程化落地 🧱
- 13. 路线图 🗺️
- 常见误区 ✅
- 可复现指南(最小步骤) 🧰
0. TL;DR 🧭
-
契约基线:命名/版本/鉴权 → 分页/过滤/排序/投影 → 缓存(ETag/条件请求/Cache-Control) → 错误(ProblemDetails) → 可观测/配额/变更管理。
-
关键语义:
If-Match强比较(强 ETag),不匹配 → 412;If-None-Match弱比较(含*),命中 → 304;- 304 必带可变元数据(
ETag/Cache-Control/Vary/...)。
-
三件套:OpenAPI Lint(Spectral)🧪+ 门户 OperationFilter 📘 + 兼容性测试集(Newman/BDN)🧰。
-
亮点:列表弱 ETag 以“本页 RowVersion 摘要”生成 📈;
Vary合并追加(含Accept&Accept-Encoding);绝对Link由 LinkGenerator 生成(适配反向代理/CDN)。
合约基线鸟瞰
1. 背景与目标 🎯
- 痛点:接口风格分裂、无上限分页、过取/欠取、弱缓存/无条件请求、错误契约不统一。
- 目标:在 ABP vNext 体系沉淀可执行的 HTTP 合约基线(可被 Lint/拦截/文档化/测试守门);以游标分页+投影降带宽,以ETag+条件请求降尾延迟与负载。
2. 适用范围 📐
- 适用:RESTful/HTTP API(Controller、Minimal API、OData 网关)。
- 非目标:领域建模与 GraphQL;本文专注HTTP 契约层。
3. 资源命名与版本治理(ABP 落地) 🧩
- 命名:复数资源、层级:
/orders/{id}/items;动作用副资源/作业资源(/exports、/jobs)。 - 版本:ABP 集成 ASP.NET API Versioning 与 ApiExplorer/Swagger 分组。
// ApiContractBaselineModule.ConfigureServices(...)
context.Services.AddAbpApiVersioning(o =>
{
o.ReportApiVersions = true;
o.AssumeDefaultVersionWhenUnspecified = true;
});
- 弃用与下线:文档与响应宣布
Deprecation/Sunset;门户提供时间线。 🗓️

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



