使用 HATEOAS RESTful API 的 SPA 路由

SPA Routing with a RESTful API using HATEOAS

在 SPA 网络应用程序(angular、React 等)中使用路由时,用户不必从应用程序的入口点开始。他们可以在浏览器中使用 URL 深入到应用程序的任何部分。

在 RESTful 后端 API 中实现 HATEOAS 时,我们假设前端只知道 URL 到 API 的入口点,并且然后 API 从那里向应用程序的其他部分提供 [​​=31=]s。

所以这就引出了一个问题,如果用户在浏览器中输入一个 URL 来加载 SPA 的特定部分(而不是入口点),SPA 如何获得合适的 API link 只是 SPA 的那一部分需要吗?

SPA 是否只是一次发出一堆 API 调用,从 API 的入口点开始,然后跟随 links 直到它获得 link 它需要它需要加载的状态?当 API 不包含所需的 link 时会发生什么,因为它不是基于应用程序当前状态的有效 link?

HATEOAS 似乎与现代 SPA 不太兼容,您可以在其中以非常特定的方式加载应用程序 sections/states。

以前有人在 SO 上问过这个问题,但我很难找到这些过去的问题和答案。我至少回答了两个,但我会总结一下通常是如何回答这个问题的。

营地 1:不要做 SPA,这没有意义。您的 HATEOAS 服务应该以客户端可以解释的方式为整个状态提供服务,而 SPA 基本上是一种 hack。

营地 2(我所在的营地):您需要一些方法将 SPA 链接映射到您后端的链接。

您通过谈论 'all the steps needed' 来获得正确的资源来描述这一点,但如果您的目标最终将其映射到 API uri,为什么不嵌入那个

https://spa.example/http://api.example/some/resource

拥有包含后端完整路径的可收藏 url,意味着您无需跳过复杂的环节,并且您的 SPA 是 API 的真正客户建筑物。

另一个好处是您还可以轻松地将您的客户端指向多个 live/dev 环境。

最后,您可以允许相对 urls 并自动将它们解析为 API url,缩短:

https://spa.example/http://api.example/some/resource

https://spa.example/some/resource