当前位置: 首页 > news >正文

【API 设计之道】04 字段掩码模式:让前端决定后端返回什么

大家好,我是Tony Bai。

欢迎来到我们的专栏 《API 设计之道:从设计模式到 Gin 工程化实现》的第四讲。

在上一讲中,我们解决了那些无法被 CRUD 囊括的复杂业务逻辑。今天,我们将目光转向数据传输的效率问题。

在日常开发中,你是否遇到过这样的“拉扯”场景:

场景 A:前端开发了一款 App,在“用户列表页”只需要展示用户的头像昵称

后端:直接复用了GetUser接口,返回了包含身份证号家庭住址注册时间最后登录IP等 50 多个字段的超级大 JSON。

前端:抱怨说:“我就要两个字段,你给我几 KB 的数据,用户在地铁上信号不好,加载太慢了!能不能给我单写一个GetUserSimple接口?”

后端:心里苦——“为了这点破事又要写个新接口?如果不写,是不是还得定一个UserSimpleDTO?”

这就陷入了 API 设计中经典的过度获取(Over-fetching)困境。

如果我们为每一种前端视图都定制一个后端接口,那就会陷入“BFF(Backend for Frontend)地狱”,后端变成了前端的“切图仔”;如果我们什么都不管,只返回全量数据,那就是对带宽和客户端内存的犯罪。

GraphQL 的出现很大程度上是为了解决这个问题,但为了这点需求引入整套 GraphQL 基础设施,成本又未免太高。

有没有一种办法,能在保持 RESTful 架构简洁性的同时,实现“按需索取”呢?

答案是肯定的。这就是今天我们要讲的API模式:字段掩码(Field Mask),也被称为“愿望清单(Wish List)”模式。

什么是字段掩码 (Field Mask)?

核心思想非常简单:客户端在请求中通过参数告诉服务端,“我只想要这些字段”,服务端据此对响应体进行裁剪。

架构模式视角

在架构设计领域,这种模式被称为Response Shaping(响应塑形)。它打破了“服务端定义契约,客户端被动接受”的传统模式,赋予了客户端(消费者)定义数据形态的权力。

http://www.cnnetsun.cn/news/73187.html

相关文章:

  • day38GPU训练及类的call方法@浙大疏锦行
  • GPT-OSS-20B vs ChatGPT:开源替代方案的性能对比实测
  • 【场景】笛卡尔积
  • GPT-OSS-20B如何通过Harmony响应格式提升专业任务准确率
  • 21届智能车赛规则文档风格借鉴:编写ACE-Step技术白皮书
  • 亚马逊云科技储瑞松:AI智能体正在重塑未来工作模式
  • ComfyUI-Manager终极安装指南:快速搭建AI绘画管理平台
  • 从数据预处理到模型部署:LLama-Factory全流程大模型训练指南
  • Windows右键菜单大改造:ContextMenuManager让你的操作效率翻倍
  • Desktop/照片太多存不下?MAZANOKE+cpolar是让存储空间+“变大”+的秘密
  • 深入理解Java的 JIT(即时编译器)
  • Electron 桌面应用开发:前端与原生交互原理及性能优化
  • LangChain+Qwen-Image-Edit-2509实现跨模态检索与编辑一体化
  • Screen Translator:打破语言壁垒的智能屏幕翻译工具解决方案
  • 少侠游戏库引入Wan2.2-T2V-5B:为独立开发者提供动态素材生成
  • JL — AC695X — 配置工具的使用
  • Wan2.2-T2V-5B结合OpenWRT打造嵌入式AI视频网关
  • NS模拟器管理新利器:ns-emu-tools全面实战手册
  • 外卖订单自动化采集工具完整使用指南:美团饿了么数据抓取解决方案
  • Git 下载加速技巧:使用CDN镜像快速拉取Qwen3-VL-8B
  • Windows系统权限突破:RunAsTI实战完全指南
  • 开源大模型新星:FLUX.1-dev镜像助力高精度文生图应用落地
  • AI音乐创作新纪元:ACE-Step开源模型助力非专业用户轻松作曲
  • 有界队列VS无界队列:阻塞队列中的“有限”与“无限”哲学
  • 10分钟搞定Windows虚拟显示器:免费扩展多屏工作空间
  • 微信小程序表格组件实战:从零到精通的数据展示方案
  • Qwen3-VL-30B跨模态推理性能评测:为何需要强大GPU支持?
  • 大数据领域分布式计算的分布式事务处理
  • Qwen-Image-Edit-2509支持对象替换与风格迁移的底层原理分析
  • Stable Diffusion 3.5 FP8如何实现低显存占用?技术架构深度解读