向HTTP DELETE请求提供参数是否有非RESTful功能?
我的情况是,我正在建模“确定要删除吗?” 场景。在某些情况下,资源的状态表明所请求的删除可能无效。您可能自己想像一些需要确认删除的情况
我们采用的解决方案是将参数传递给delete请求,以指示可以继续进行删除(“?force_delete = true”)
例如
DELETE http://server/resource/id?force_delete=true
我认为自从以下原因以来,它仍然令人放松:
(a)DELETE的语义未更改-用户仍然可以发送普通的DELETE请求,但此操作可能会失败并显示409,响应主体将说明原因。我说这可能会失败,因为(出于不值得解释的原因)在某些情况下没有理由提示用户。
(b)Roy的论文中没有任何东西表明它与REST的精神背道而驰-为什么会这样,因为HTTP只是REST的一种实现,所以为什么传递HTTP参数会很重要
有人可以指出明确的陈述,说明为什么它不是RESTful的吗?
关于一个相关的问题,如果用户未指定force_delete,那么我正在返回409 Conflict
-这是最合适的响应代码吗?
跟进
经过进一步的研究,我认为向DELETE添加参数可能会违反一些原则。
首先是该实现可能违反“统一接口”(请参见Roy论文的 5.1.5节)。
通过添加“ force_delete”,我们在已经定义良好的DELETE方法上添加了一个附加约束。此约束仅对我们有意义。
您也可能会争辩说它违反了“ 5.1.2客户端-服务器”,因为确认对话框确实是UI问题,并非所有客户端都希望确认删除。
建议有人吗?