代码之家  ›  专栏  ›  技术社区  ›  Borjante

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

  •  0
  • Borjante  · 技术社区  · 7 年前

    我正在开发一个应用程序,它有一些非常大的模型。算上基表和所有相关表,现在大约有30个表用于描述房地产。

    所以问题是,基于REST,我需要大约30个子例程来更新每个相关的模型。

    /属性 /属性/1 /属性/1/可用性 /属性/1/表面 /属性/1/附加 /属性/1/图像

    ...

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

    现在这个设计看起来真的很酷,但当涉及到它的工作,它可能是有点麻烦。

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

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

    现在我正在混合一些他们所说的:

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

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

    如果我能应用完美的REST API设计,那么每次用户点击save按钮时,我都会发出30个请求。

    通过向主资源(/properties/1)发出PUT请求(而不是“properties/1/images”)来更新相关模型(例如,您可以更改一些基本数据,还可以更改extras和images的可用性)是否正确?.

    不确定这是否与stackoverflow直接相关。如果不是的话,我提前道歉。

    1 回复  |  直到 7 年前
        1
  •  0
  •   VoiceOfUnreason    7 年前

    所以问题是,基于REST,我需要大约30个子例程来更新每个相关的模型。

    在设计REST API时要问的最重要的问题

    作为一个网站,我该怎么做?

    如果你的答案是:“我会有30个不同的页面,客户可以加载和修改”,那么你自己淘汰。

    可以 发现应用 task based ui 会有帮助的。

    通过向主资源(/properties/1)发出PUT请求(而不是“properties/1/images”)来更新相关模型(例如,您可以更改一些基本数据,还可以更改extras和images的可用性)是否正确?.

    正如Roman Vottner已经指出的-是的,RFC 7231明确指出修改一个资源可能会在其他地方产生副作用。基本上,HTTP描述 语义学 ,不是 实施 . 你在黑盒子里做什么取决于你——唯一的限制是交换的消息和它们的解释。

    与更改使哪些缓存表示无效相比,HTTP更关心的是如何更新模型。