Theo nguyên tắc HATEOAS mà mỗi tiểu bang nên được siêu liên kết, cách tốt nhất để tạo mô hình liên kết thay đổi trạng thái tài nguyên là gì?HATEOAS - Cách mô hình quan hệ liên kết thay đổi trạng thái
Hãy lấy ví dụ cổ điển với đơn đặt hàng:
{
id : 12,
state: 'pending',
...,
links: [
...,
{
rel: 'cancel',
href: '/orders/12/cancel'
},
...
]
}
Tôi không totall hạnh phúc với điều đó "/ hủy" phần - Tôi sẽ cảm thấy tốt hơn rất nhiều nếu tôi có thể gửi "PUT" Yêu cầu với nội dung:
{
status:'cancelled'
}
Nhưng làm cách nào để thể hiện điều đó với thuộc tính "href" trong phần liên kết? Tôi muốn đại diện cho các hành động có sẵn ở đó, ví dụ, hủy bỏ một đơn đặt hàng không phải lúc nào cũng có thể (trạng thái 'đã hoàn tất').
Một khả năng có thể là sử dụng URL như '/ orders/12? Action = cancel' những gì nó cảm thấy giống như phương pháp RPC và tôi đang thiếu thứ gì đó.
Một khả năng trông lẽ đẹp nhất, sẽ có liên hệ như thế:
{
rel: 'cancel',
href: '/orders/12/',
type: 'PUT',
values: {
state: 'cancelled'
}
}
Giải pháp này có thể cảm thấy một chút dài dòng.
Bất kỳ ý tưởng nào về cách xử lý điều đó một cách duyên dáng? Có lẽ ai đó đã giải quyết "vấn đề" tương tự?