一个直截了当的问题:如果我正在构建一个无状态客户端,它在请求之间“更改页面”,我如何正确使用超媒体 API?
当然,关键点是客户端不应该构造 URL。例如,如果我们要获取某种类型的集合(比如说水果),每个集合条目都将具有一个 URL,以链接到 API 中的单个水果资源。伟大的。
[ { "name": "Apple", "url": ".../fruits/15" } ]
然而,在我的客户中,在展示水果列表后,我希望将列表链接到另一个包含水果详细信息的前端页面。这样的详细信息页面当然应该是可收藏的,等等。前端 URL 的精确结构是我意识到的,从哲学上讲,很少关注 - 但它对下面的问题具有实际意义。
<a href="?">Apple</a>
那么问题是,在加载水果详细信息页面时,没有当前上下文的客户端如何决定要获取的 API URL?
/my/frontend/stuff/fruits/{?}
现在是什么:o?
最初想到的一个解决方案是在集合响应中有一个“项目”URL 模板,并使用其中的命名参数来构造页面 URL。然后详细信息页面将查询 API 以恢复相同的“项目”URL 并植入它传递的参数。这似乎并不理想,但它确实实现了所需的解耦。
提前致谢。