【问题标题】:REST API design for updating the parent of a node in tree hierarchy用于更新树层次结构中节点父级的 REST API 设计
【发布时间】:2019-05-09 05:02:57
【问题描述】:

我有三个具有以下结构的数据库表:

Country
id | name  

State
id | name | country_id

City
id | name | state_id

这些的现有 REST 端点 URL 是:

/country                                                For list of all countries
/country/{country_id}                                   For a specific country
/country/{country_id}/state                             For list of all states in a country
/country/{country_id}/state/{state_id}                  For a specific state
/country/{country_id}/state/{state_id}/city             For list of all the cities in a state of a country
/country/{country_id}/state/{state_id}/city/{city_id}   For a specific city

现在我需要将一个城市从一个州移动到另一个州,我应该如何为这个操作设计 REST Endpoint?建议。

【问题讨论】:

    标签: rest api url restful-url


    【解决方案1】:

    我需要将一个城市从一个州移动到另一个州,我应该如何为此操作设计 REST Endpoint?

    据我所知,这里没有很好的答案。

    一个常用的启发式方法是考虑如何在网站上执行此操作:您将加载一些表单,使用输入控件来描述您的更改,提交表单,然后 http 客户端将POST 表单数据到服务器指定的某个 URI。

    所以这部分很简单——URI 可以是“任何东西”,因为客户端并不关心;它只是使用表单中的 URI。

    服务器将接收消息并进行处理。改变其他资源的副作用是可能的,由服务器自行决定,所以没关系。

    但是缓存的故事不是很好。 “移动”一个城市的请求的语义改变了源状态、目标状态,也许还有城市本身的表示。我们可以安排表单,使这些资源中的任何一个因成功响应而失效(只需使用该标识符作为请求的目标),但我们没有任何标准化机制来使其他资源失效。

    如果整个树层次结构由单个资源描述,那么就没有问题 - 那将是我们无效的一个资源。

    (想象一下 wikipedia - 您更改了 Boston 的页面,这也更改了 Massachusetts 的页面。没有标准的方法可以告诉客户 两个 页面都已更改。 )

    【讨论】:

      猜你喜欢
      • 2020-01-04
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      相关资源
      最近更新 更多