我敢肯定这个话题必须已经被掩盖过,所以很高兴能指出我在搜索时可能错过的任何文章。
我需要实现一个非常简单的REST API,以便以主/明细关系添加和检索记录。我的两个选择如下:
选项1
POST /master
POST /master/[id]/details
GET /master/[id]
GET /master/[id]/details
优点
感觉更“ RESTful”
可以检索细粒度的数据以提高性能
缺点
没有至少一个细节,主人就没有意义。如何处理原子性?如果添加时详细信息失败,是否补偿母版上的DELETE?
检索主/明细集需要多次调用
选项2
POST /master_and_details
GET /master_and_details/[master id]
优点
易于管理的原子性
缺点
更复杂的结构需要管理
GET必须返回整个结构(并非总是有效的)
感觉不是很“ RESTful”
谢谢,
约翰
最佳答案
REST或多或少地决定了选项1,选项2只是一个普通的旧HTTP api。
您所说的没有至少一个细节就没有主人的说法可能是错误的。您不知道聪明的开发人员将来如何使用您的api。您可以猜测,但您并不真正知道。
如果您自己确实需要复合解决方案,则可以始终在更高级别上添加一个接口,该接口调用两个单独的接口并返回复合对象。
选项1允许微服务实现的可能性-或至少将关注点分离为两个可分离的对象。仅选项2不会。
关于rest - REST的主/明细,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33336804/