API 资产治理:ETag/Cache-Control/分页/排序/投影的“契约基线”

API 资产治理:ETag/Cache-Control/分页/排序/投影的“契约基线” 🚀



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);绝对 LinkLinkGenerator 生成(适配反向代理/CDN)。

合约基线鸟瞰

数据与性能
响应变瘦 💡
分页/排序/投影
304 命中率 ↑
ETag/条件请求
设计规范 📚
OpenAPI 契约 🧾
Spectral Lint 🧪
CI 门禁 ✅
运行时拦截 🔒
开发者门户 📘
调用方集成 🤝
可观测/告警 🔭

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;门户提供时间线。 🗓️

4. 查询契约:分页 / 过滤 / 排序 / 投影 🔎

4.1 分页(游标优先) 🧭

Client API Service GET /resources?limit=20 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kookoos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值