You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API URL设计:路径/查询参数选型——通过Object B的ID获取Object A

接口URL设计方案分析

首先明确核心原则:RESTful API设计优先以资源和资源间的关系为核心,而非动作描述。针对你的场景(Object A与Object B为一对多,通过B的ID找所属A),逐个分析可选方案,并给出最优建议:

方案1:/objectA?objectBId=:id(查询参数)

  • 语义:从Object A的集合中,过滤出与指定Object B关联的实例
  • 优缺点:
    • 优点:符合“集合过滤”的常规设计,若后续业务变更(比如出现一个B对应多个A的场景),接口无需调整就能兼容多结果返回
    • 缺点:当前业务是一对多(一个B仅对应一个A),但该接口的语义是“查询集合”,与实际返回单个资源的结果存在轻微语义偏差;另外,用户需要理解“通过B的ID过滤A”的逻辑,不如直接关联资源的路径直观

方案2:/objectA/fromObjectBId/:id(自定义路径参数)

  • 语义:通过Object B的ID获取对应的Object A
  • 优缺点:
    • 优点:直接点明了接口的用途
    • 缺点:路径中包含fromObjectBId这类动作描述,违背REST以资源为核心的设计原则,URL结构不够简洁优雅,也不符合行业通用的API设计习惯

最优推荐:/objectB/:id/objectA(关联资源路径)

  • 语义:先定位到ID为:id的Object B资源,再获取它所属的Object A资源
  • 优势:
    • 完全贴合REST资源关系的设计逻辑,语义清晰直观,开发者一眼就能理解这是“从某个Object B获取它的父Object A”
    • 符合行业通用的关联资源访问范式(比如/orders/:id/user表示获取某订单的所属用户)
    • 结构简洁,没有冗余的动作描述,维护性和可读性都更强

如果团队有统一的命名规范(比如用parent代替objectA),也可以调整为/objectB/:id/parent,只要保持语义一致即可。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:13:16