我想知道是否有任何最佳实践可以使用REST实现“禁用操作”。禁用意味着清除所有字段中的数据,但资源本身就存在。
示例:
如果JSON中的资源表示是
{"id":"1", "data":["a", "b", "c"]}
然后在“禁用”之后,JSON中的资源表示变为
{"id":"1", "data":[]}
我正在考虑向资源添加禁用字段,例如
{"id":"1", "data":["a", "b", "c"], "disable":false}
然后进行部分更新(PATCH)以将“禁用”设置为true。现在来了,我想在“禁用”设置为true时自动删除数据,但是,我不知道这是不是一个好方法。我希望您的意见和任何您认为更好的替代方案。
请求看起来像(欢迎其他想法)
PATCH / resources / 1?disable = true
现在如果我们获取资源/资源/ 1,我们应该获取
{"id":"1", "data":[], "disable":true}
你们认为这是一个好方法还是我需要以其他方式做到这一点。关键问题是在更新一个字段时找出更新资源其他字段的良好/标准方法。
答案 0 :(得分:0)
据我所知,这不是最佳做法。但是,在构建了一些RESTful API后,我有了一个意见。
以下是一些需要考虑的想法:
如果要继续使用disable属性,则将其置于JSON中可能是合适的,因为它成为资源的一部分。换句话说,禁用对此资源具有长期意义,以便API的使用者可能以有意义的方式向某个用户显示此值。
但是,如果你不是要持久化disable属性而只是根据disable更改数据的返回方式,那么我会做这样的事情:http:/// myresource?disable = true。我更喜欢这个,因为禁用不是资源的属性,而是api的一个函数,它改变了它的表示。
从我的角度来看,数据的表示应该与资源本身分开。或许可以想到这一点的方法是我返回JSON或XML。我是否已禁用JSON或启用JSON。
我不确定这里是否存在正确的答案,但我希望有所帮助。