惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
A
About on SuperTechFans
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
雷峰网
雷峰网
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
IT之家
IT之家
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
B
Blog RSS Feed
H
Help Net Security
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
D
DataBreaches.Net
L
LangChain Blog
Vercel News
Vercel News

博客园 - z5337

【转】禁用 Chrome 浏览器的自动更新 【转】Avalonia 12 最小信创项目模板 【转】Avalonia 周边介绍 【转】国产操作系统对 Avalonia 的支持情况 【转】国产操作系统优化篇 [openKylin] 入门知识点 【转】国产操作系统优化篇 [openKylin] 第一步 - Qt + VMware 【转】p2055dn 打印机配置 IP 地址 【转】Windows 锁屏后屏幕不熄灭排查 【转】既然 java 8 因为组件容易被攻击,.net core 也有大量第三方组件,是不是也容易出问题 【转】最小 web api 学习 【转】使用记事本区分图片格式 【转】蓝牙耳机的播放控制 【转】JoyToKey 键位映射 【转】[C#] Web API 中的常见层次 【转】[C#] .net core 项目的目标框架设置 【转】[C#] 项目里的配置文件与选项对比 【转】[C#] GlobalUsing 的使用 【转】[.net core] 项目的 Windows 服务器部署 【转】《三字经》全文 【转】[IDEA] 调试时怎么判断使用哪个配置文件 【转】PO、DO、VO、BO、DTO、DAO、POJO 的区别 【转】[web]怎么移除网页最上层的水印 【转】[C#] 30+个.NET开发最佳实践 【转】[C#] WPF 保留选中的高亮色 【转】Windows Server 系统的桌面上显示 此电脑 图标 【转】[C#] 参数前加 in 的作用 【转】[C#] Enum 的 Flags 特性 【转】[C#] Tuples 元组介绍 【转】[C#] Record 的使用 【转】[C#] 预处理指令
【转】[C#] 要从接口取时间,单个订单查询和批量查询,写一个...
z5337 · 2025-10-21 · via 博客园 - z5337

转自:豆包

建议分成两个独立接口,而非合并为一个。这种设计更符合接口的单一职责原则,能让接口语义更清晰、扩展性更强,同时避免后续维护中的逻辑冗余。

  1. 入参 / 出参结构不同

    • 单个订单查询:入参通常是 orderId(单个字符串 / 数字),出参是单个订单对象(OrderResponse)。
    • 批量查询:入参是 orderIds(集合类型,如 List<string>),出参是订单对象列表(List<OrderResponse>)或带总数的分页结构,还可能需要处理 “部分订单不存在” 的特殊逻辑(如返回空对象 / 标记状态)。 若合并为一个接口,需用 object 类型接收入参(兼容单个 / 集合),再通过逻辑判断分支处理,会导致入参校验、返回值解析变得复杂。
  2. 性能与扩展性不同

    • 批量查询(50 个)可能需要更优的数据库查询逻辑(如 where in 批量查询),或增加超时时间、限流策略(避免批量请求占用过多资源)。
    • 单个查询通常是简单的主键查询,性能更稳定,无需额外配置。 分开设计可针对两种场景单独优化,例如给批量接口添加 “最大查询数量限制”(防止传入 1000 个 ID 导致性能问题),而单个接口无需此逻辑。
  3. 语义与维护成本不同

    • 单个接口(如 /api/orders/{orderId})和批量接口(如 /api/orders/batch)语义明确,调用方(前端 / 其他服务)能直接通过接口名判断用途,无需查看文档确认 “入参到底该传单个还是集合”。
    • 合并接口会导致逻辑冗余(如判断入参是单个还是集合、处理两种返回格式),后续修改时(如批量查询需要加分页),容易影响到单个查询的正常逻辑。
  • 推荐方案:拆分两个接口,语义清晰、易于维护和优化。
  • 避免方案:合并为一个接口,会导致入参出参混乱、逻辑冗余,后续扩展风险高。

如果担心调用方需要调用两次接口,可在文档中明确两个接口的用途和差异,或提供前端封装方法(按需调用单个 / 批量接口),但接口层仍需保持职责单一。