我对使用 REST API 构建 Web 服务很感兴趣。我一直在阅读有关 HATEOAS 的文章,许多示例通过将其与人类在网上冲浪时的行为进行比较来解释该概念。这让我在想,为什么不以人类和机器都可以轻松使用的方式构建 REST API?
例如,我有一个小部件的内部模型,该小部件具有部件号、价格等属性。当机器请求小部件列表时,我可以返回一个 JSON 表示。
{
widgets: [
{
id: 1,
part_number: "FOO123",
price: 100,
url: "/widget/1"
},
{
id: 2,
part_number: "FOO456",
price: 150,
url: "/widget/2"
},
{
id: 3,
part_number: "FOO789",
price: 200,
url: "/widget/3"
},
...
]
}
当一个人通过他/她的网络浏览器请求相同的列表时,似乎我应该能够采用相同的内部模型并对其应用不同的视图来生成 HTML 响应。(当然,我会用其他页面元素来装饰 HTML 响应,例如页眉、页脚等)
这是一个明智的设计吗?为什么或者为什么不?是否有任何流行的网站实际上正在这样做?
我看到的最大缺点是用户没有明显的方法来删除资源。在我的用例中,我不会让用户修改或删除资源,所以这不会破坏交易,但一般来说,你会如何处理呢?