Tôi đang cố gắng xoay quanh cách tốt nhất để giải quyết các khái niệm trong API dựa trên REST. Tài nguyên phẳng không chứa các tài nguyên khác không có vấn đề. Nơi tôi đang gặp rắc rối là các tài nguyên phức tạp.
Ví dụ, tôi có một tài nguyên cho một cuốn truyện tranh. ComicBook
có tất cả các loại tài sản trên nó thích author
, issue number
, date
vv
Một cuốn truyện tranh cũng có một danh sách các 1..n
bìa. Những bìa này là những đối tượng phức tạp. Chúng chứa rất nhiều thông tin về trang bìa: nghệ sĩ, một ngày, và thậm chí là một hình ảnh 64 được mã hóa cơ sở của trang bìa.
Đối với một GET
trên ComicBook
tôi chỉ có thể trả lại truyện tranh, và tất cả các trang bìa bao gồm cả hình ảnh cơ sở 64 của họ. Đó có lẽ không phải là một vấn đề lớn để có được một truyện tranh. Nhưng giả sử tôi đang xây dựng một ứng dụng khách muốn liệt kê tất cả truyện tranh trong hệ thống trong một bảng.
Bảng sẽ chứa một vài thuộc tính từ ComicBook
tài nguyên, nhưng chúng tôi chắc chắn sẽ không muốn hiển thị tất cả các bìa trong bảng. Trả lại 1000 cuốn truyện tranh, mỗi cuốn có nhiều bìa sẽ dẫn đến một lượng dữ liệu lớn đến mức lố bịch, dữ liệu không cần thiết cho người dùng cuối trong trường hợp đó.
Bản năng của tôi là tạo ra Cover
một tài nguyên và có ComicBook
chứa bìa. Vì vậy, bây giờ Cover
là một URI. GET
bây giờ trên truyện tranh hoạt động, thay vì Cover
tài nguyên khổng lồ, chúng tôi gửi lại URI cho mỗi trang bìa và khách hàng có thể truy xuất tài nguyên Cover khi họ yêu cầu.
Bây giờ tôi có một vấn đề với việc tạo ra truyện tranh mới. Chắc chắn tôi sẽ muốn tạo ra ít nhất một trang bìa khi tôi tạo Comic
, thực tế đó có thể là một quy tắc kinh doanh.
Vì vậy, bây giờ tôi đang gặp khó khăn, tôi hoặc là buộc các khách hàng để thực thi quy tắc kinh doanh bằng cách đầu tiên gửi một Cover
, nhận được URI cho trang bìa, sau đó POST
ing một ComicBook
với URI trong danh sách, hoặc tôi POST
trên ComicBook
mất trong một nguồn tìm kiếm khác với nó spits ngoài. Các tài nguyên đến POST
và GET
là các bản sao sâu, trong đó các GET
tài liệu gửi đi chứa các tham chiếu đến các tài nguyên phụ thuộc.
Tài Cover
nguyên có thể là cần thiết trong mọi trường hợp bởi vì tôi chắc chắn là khách hàng tôi muốn giải quyết hướng đi trong một số trường hợp. Vì vậy, vấn đề tồn tại ở dạng chung bất kể quy mô của tài nguyên phụ thuộc. Nói chung, làm thế nào để bạn xử lý các tài nguyên phức tạp mà không buộc khách hàng chỉ "biết" cách các tài nguyên đó được tạo ra như thế nào?