在DELETE查询中可能会级联到删除大量数据,我的REST API是否会盲目地进行或发出警告并要求确认?
我正在构建一个API,用于抽象存储在关系数据库中的复杂数据的操作。删除其他项引用的项应该从逻辑上删除它们,然后级联。
一个简单的例子(与真实情况无关)将是一组三个" Tree / Branch / Leaf" tables:Leaf行具有Branch的id的外键,而Branch行类似地包含Tree id。 API在任何级别启用DELETE,但是如果删除Tree项,它将在内部级联以删除直接或间接引用它的所有Branch和Leaf。
因此,对于树的DELETE查询,API可以:
我倾向于认为API应该保持简单,并且傻瓜保护应该在客户端,但会欣赏外部智慧。
答案 0 :(得分:1)
像往常这样的问题,答案真的是“它取决于”。就个人而言,如果您选择“确认”大量删除的路线,我会改为:
depth
或cascading
标头。而不是'你真的想要这个吗?'你知道要求你的开发人员确保他们想要进行深度删除。 Depth
是标准标题,但出现在WebDAV规范中。 Cascading
不会,因此您可以在X-
前面添加前缀,具体取决于您是否认为这是一个好主意=)409
。这就是WebDAV如何做到这一点并在这里有很多意义。然而,从我的观点来看,我认为我宁愿选择“取消删除”。