在REST中实现禁用资源的最佳实践

在REST中实现禁用资源的最佳实践,rest,Rest,我想知道是否有任何最佳实践可以使用REST实现“禁用操作”。禁用意味着清除所有字段中的数据,但资源本身存在 例如: 如果JSON中的资源表示为 {"id":"1", "data":["a", "b", "c"]} 然后,在“禁用”之后,JSON中的资源表示将变为 {"id":"1", "data":[]} 我正在考虑在资源中添加一个禁用字段,如 {"id":"1", "data":["a", "b", "c"], "disable":false} 然后进行部分更新(补丁),将“禁用”设置为

我想知道是否有任何最佳实践可以使用REST实现“禁用操作”。禁用意味着清除所有字段中的数据,但资源本身存在

例如:

如果JSON中的资源表示为

{"id":"1", "data":["a", "b", "c"]}
然后,在“禁用”之后,JSON中的资源表示将变为

{"id":"1", "data":[]}
我正在考虑在资源中添加一个禁用字段,如

{"id":"1", "data":["a", "b", "c"], "disable":false}
然后进行部分更新(补丁),将“禁用”设置为true。现在,我想在“disable”设置为true时自动删除数据,但是,我不知道这是否是一个好方法。我希望您的意见和您认为更好的任何可能的替代方案

请求可能看起来像(欢迎其他想法)

修补程序/资源/1?禁用=真

现在如果我们得到resource/resources/1,我们应该得到

{"id":"1", "data":[], "disable":true}

你们认为这是一个好的方法还是我需要用其他的方法。关键问题是在更新一个字段时,找出一种好的/标准的方法来更新资源的其他字段

据我所知,没有最佳实践。然而,在构建了一些RESTful API之后,我有一个看法

以下是一些需要考虑的想法:

如果要持久化disable属性,那么将其放在JSON中可能是合适的,因为它将成为资源的一部分。换句话说,disable对该资源是否具有长期意义,这样API的使用者可能会以有意义的方式向某个用户显示该值

但是,如果您不打算持久化disable属性,而只是更改基于disable返回数据的方式,那么我会这样做:http:///myresource?disable=true. 我更喜欢这样,因为disable不是资源的属性,而是api的函数,它改变了它的表示形式

在我看来,数据的表示应该与资源本身分开。也许可以这样想:我是否返回JSON或XML。我返回的是禁用JSON还是启用JSON

我不确定这里是否存在正确的答案,但我希望这会有所帮助