使用 REST 的主/细节

Joh*_*ohn 5 rest post get master-detail

我确信这个话题之前一定已经被覆盖了,所以我很高兴能指出我在搜索时可能遗漏的任何文章等。

我需要实现一个非常简单的 REST API 来添加和检索主/明细关系中的记录。我的两个选项如下:

选项1

POST /master
POST /master/[id]/details
GET  /master/[id]
GET  /master/[id]/details
Run Code Online (Sandbox Code Playgroud)

优点

  • 感觉更“RESTful”
  • 可以检索细粒度数据以提高性能

缺点

  • 没有至少一个细节,大师就没有意义。如何处理原子性?如果添加时细节失败,在主节点上补偿 DELETE?
  • 检索主/详细信息集需要多次调用

选项 2

POST /master_and_details
GET  /master_and_details/[master id]
Run Code Online (Sandbox Code Playgroud)

优点

  • 易于管理原子性

缺点

  • 更复杂的管理结构
  • GET 必须返回整个结构(并不总是有效的)
  • 感觉不是很“RESTful”

谢谢,约翰

Eng*_*ery 3

REST 或多或少决定了选项 1,选项 2 只是一个普通的旧 http api。

你所说的“如果没有至少一个细节,大师就毫无意义”的说法可能是错误的。你不知道聪明的开发人员将来会如何使用你的 api。你可以猜测,但你并不真正知道。

如果您自己确实需要复合解决方案,您始终可以在更高级别添加一个接口,该接口调用两个单独的接口并返回一个复合对象。

选项 1 允许实现微服务,或者至少将关注点分离为两个可分离的对象。仅选项 2 不会。