遵循HATEOAS原則,每個州應該超鏈接,建立改變資源狀態的鏈接的最佳方式是什麼?HATEOAS - 如何建模改變狀態的鏈接關係
讓我們用命令經典的例子:
{
id : 12,
state: 'pending',
...,
links: [
...,
{
rel: 'cancel',
href: '/orders/12/cancel'
},
...
]
}
我不與「/取消」部分totall快樂 - 我感覺好多了,如果我可以發送「PUT」的要求與內容:
{
status:'cancelled'
}
但我怎麼用鏈接部分中的「href」屬性來表示?我想在那裏表示可用的行爲,例如,取消訂單並不總是可能的(「完成」狀態)。
一種可能性就是使用像'/ orders/12?action = cancel'這樣的URL,它有點像RPC方法,我錯過了一些東西。
,看起來可能最好的另一種可能性,是有這樣的鏈接:
{
rel: 'cancel',
href: '/orders/12/',
type: 'PUT',
values: {
state: 'cancelled'
}
}
該解決方案也許感覺有點冗長。
任何想法如何優雅地處理?也許有人已經解決了類似的「問題」?