遵循 HATEOAS 原则,即每个状态都应该是超链接的,对改变资源状态的链接进行建模的最佳方法是什么?
让我们以订单为例:
{
id : 12,
state: 'pending',
...,
links: [
...,
{
rel: 'cancel',
href: '/orders/12/cancel'
},
...
]
}
我对“/cancel”部分并不完全满意——如果我可以发送带有内容的“ PUT ”请求,我会感觉好多了:
{
status:'cancelled'
}
但是我如何在链接部分用“href”属性表示呢?我想在那里表示可用的操作,例如,取消订单并不总是可能的(“完成”状态)。
一种可能性是使用像'/orders/12?action=cancel'这样的URL,这有点像RPC方法,我错过了一些东西。
另一种看起来可能最好的可能性是有这样的链接:
{
rel: 'cancel',
href: '/orders/12/',
type: 'PUT',
values: {
state: 'cancelled'
}
}
这个解决方案可能感觉有点冗长。
任何想法如何优雅地处理?也许有人已经解决了类似的“问题”?