REST设计 - 使用大量相关模型更新大型资源

时间:2018-06-18 15:29:32

标签: rest crud

我正在开发一个有很多大型模型的应用程序。计算基表和所有相关表,现在大约有30个表用于描述房地产属性。

所以,基于REST,我必须拥有30个子路由才能更新每个相关模型的属性。

/属性 /属性/ 1 /属性/ 1 /可用性 /属性/ 1 /表面 /属性/ 1 /额外 /属性/ 1 /图像

...

一个房产真的有很多相关的东西,相信我。

现在上面这个设计看起来非常酷,但是当谈到使用它时,它的迁移有点麻烦。

我有2个客户,一个是内部公司仪表板,另一个是我们用户的仪表板。

他们可以很好地查看附加到属性的所有内容,并可以通过更改表单字段中的数据并单击“提交”来修改它。

现在我正在混合他们所谓的一点:

  

细粒度CRUD资源与粗粒度资源

这意味着您可以使用巨大的JSON对象POST / properties / 1并更改一些相关模型。

如果我应用完美的REST API设计,每次用户点击保存按钮时,我最终会发出30个请求。

通过向主资源(/ properties / 1)发出PUT请求而不是“properties / 1”,更新相关模型(假设您可以更改一些基本数据以及附加信息和图像的可用性)是否正确? /图像“?

不确定这是否与stackoverflow直接相关。如果不是,我会事先道歉。

1 个答案:

答案 0 :(得分:0)

  

所以,基于REST,我必须拥有30个子路由才能更新每个相关模型的属性。

设计REST API时最重要的问题

  

我如何将其作为网站?

如果您的答案是:"我会有30个不同的页面,客户可以加载和修改",然后自己敲门。

可能发现应用task based ui的原则会有所帮助。

  

通过向主资源(/ properties / 1)发出PUT请求而不是更新相关模型(让我们说你可以改变一些基本数据,还有可用的附加内容和图像)是否正确"属性/ 1 /图像"?

正如Roman Vottner已经注意到的那样 - 是的,RFC 7231明确表示修改一个资源会在其他地方产生副作用。从根本上说,HTTP描述语义,而不是实现。你在黑匣子里做什么取决于你 - 唯一的限制是交换的信息及其解释。

HTTP关于更新模型的方式比关于修改无效的缓存表示的关注要少得多。